上一篇里介紹了Job和Trigger的常用方法,這一節將介紹Calendar,它的作用是排除特定的日期時間。 Calendar的常用類 DailyCalendar 排除每天某個時間段任務的執行 例子: var sche = StdSchedulerFactory.GetDefaultSchedule ...
上一篇里介紹了Job和Trigger的常用方法,這一節將介紹Calendar,它的作用是排除特定的日期時間。
Calendar的常用類 DailyCalendar 排除每天某個時間段任務的執行 例子: var sche = StdSchedulerFactory.GetDefaultScheduler();
sche.Start();
//使任務在10點到11點間不再執行
DailyCalendar cale = new DailyCalendar(
DateBuilder.DateOf(10, 0, 0).DateTime,
DateBuilder.DateOf(11, 0, 0).DateTime
);
sche.AddCalendar("myCalendar", cale, true, true);
WeeklyCalendar 排除每周某個星期的任務的執行
例子:
var sche = StdSchedulerFactory.GetDefaultScheduler();
sche.Start();
WeeklyCalendar cale = new WeeklyCalendar();
cale.SetDayExcluded(DayOfWeek.Thursday, true); //讓星期四不觸發Schedule
//cale.SetDayExcluded(DayOfWeek.Thursday, false); //讓星期四觸發Schedule
sche.AddCalendar("myCalendar", cale, true, true);
HolidayCalendar 排除某一天的任務的執行(如果涉及到同一天跨年的情況,需要多次添加不同年份)
例子:
var sche = StdSchedulerFactory.GetDefaultScheduler();
sche.Start();
HolidayCalendar cale = new HolidayCalendar();
cale.AddExcludedDate(DateTime.Now.AddYears(-1)); //排除去年的今天不處理
cale.AddExcludedDate(DateTime.Now); //排除今天不處理
sche.AddCalendar("myCalendar", cale, true, true);
MonthlyCalendar 排除每月某一天的任務的執行
例子:
var sche = StdSchedulerFactory.GetDefaultScheduler();
sche.Start();
MonthlyCalendar cale = new MonthlyCalendar();
cale.SetDayExcluded(25, true); //排除每個月25號執行
sche.AddCalendar("myCalendar", cale, true, true);
AnnualCalendar 排除每年某一天的任務的執行
例子:
var sche = StdSchedulerFactory.GetDefaultScheduler();
sche.Start();
AnnualCalendar cale = new AnnualCalendar();
//12月25號不執行
cale.SetDayExcluded(new DateTimeOffset(2018, 12, 25, 12, 0, 0, TimeSpan.FromHours(8)), true);
sche.AddCalendar("myCalendar", cale, true, true);
CronCalendar 通過Cron表達式排除任務的執行
例子:
var sche = StdSchedulerFactory.GetDefaultScheduler();
sche.Start();
//只在營業時間執行8AM-5PM
CronCalendar cale = new CronCalendar("* * 0-7,18-23 ? * *");
sche.AddCalendar("myCalendar", cale, true, true);