更新 Quartz.net cron 触发器,使其不在每日触发器的特定日期执行



我有每天在一天中的特定时间触发的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 类,该类用于从您创建的触发器中排除整天。

这实际上在文档中得到了很好的描述(石英 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();

最新更新