[英]Update Quartz.net cron trigger not to execute on a particular date/dates for daily trigger.
我有每天在特定時間觸發的 cron 觸發器,我必須更新該觸發器,以便我不希望該觸發器在特定日期執行。
例如。 我有每天每天執行的觸發器,我必須傳遞一個日期(31Oct2017)在這個日期這個觸發器不應該執行。
我試過下面的代碼
var calendar = SCSScheduler.Scheduler.GetCalendar(id);
CronCalendar cronCal = new CronCalendar(calendar,cronExceptionSchedule);
SCSScheduler.Scheduler.AddCalendar(id, cronCal, true, true);
var newTrigger = tb.WithCronSchedule(cronSchedule)
.StartAt(DateTime.UtcNow)
.ForJob(id)
.ModifiedByCalendar(id)
.Build();
SCSScheduler.Scheduler.RescheduleJob(key, newTrigger);
我找不到任何方法來更新日歷以不執行此特定日期的作業。
您應該使用HolidayCalendar
類,該類用於從您創建的觸發器中排除整日。
這實際上在文檔中有很好的描述(quartz 3.0beta1 的代碼):
HolidayCalendar cal = new HolidayCalendar();
cal.AddExcludedDate(new DateTime(2017, 10, 31));
await sched.AddCalendar("myHolidays", cal, false, false);
ITrigger t = TriggerBuilder.Create()
.WithIdentity("myTrigger")
.ForJob("myJob")
.WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(9, 30)) // execute job daily at 9:30
.ModifiedByCalendar("myHolidays") // but not on holidays
.Build();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.