簡體   English   中英

更新 Quartz.net cron 觸發器,使其不在每日觸發器的特定日期/日期執行。

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM