【问题标题】:Update Quartz.net cron trigger not to execute on a particular date/dates for daily trigger.更新 Quartz.net cron 触发器,使其不在每日触发器的特定日期/日期执行。
【发布时间】:2017-10-10 06:43:40
【问题描述】:

我有 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);

我没有找到任何方法来更新日历以不执行此特定日期的作业。

【问题讨论】:

    标签: c# quartz-scheduler quartz.net


    【解决方案1】:

    您应该使用HolidayCalendar 类,该类用于从您创建的触发器中排除一整天。

    documentation(石英 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();
    

    【讨论】:

      猜你喜欢
      • 2015-11-27
      • 1970-01-01
      • 1970-01-01
      • 2021-09-07
      • 1970-01-01
      • 2013-03-16
      • 1970-01-01
      • 1970-01-01
      • 2019-08-25
      相关资源
      最近更新 更多