Quartz.Net创建在多个特定日期时间触发的计划

时间:2016-08-02 11:16:55

标签: c# quartz.net

我需要创建一个触发器,该触发器将在特定的DateTimes列表中触发。

我知道我可以为每个datetime创建一个简单的触发器。

我目前的代码:

var trigger = (ICronTrigger)TriggerBuilder.Create()
                .WithIdentity(triggerKey)
                .ForJob(job)
                .WithCronSchedule(cron)                                   
                .StartAt(DateTime.UtcNow)
                .WithPriority(1)
                .Build();

2 个答案:

答案 0 :(得分:0)

您需要将触发器与日历相关联,然后在日历中选择要激活作业的日期。

来自文档

  

Quartz Calendar对象(不是java.util.Calendar对象)可以   在定义和存储触发器时与触发器相关联   在调度程序中。日历对于排除时间块非常有用   从触发器的射击时间表。例如,你可以创建   每个工作日上午9:30触发工作的触发器,但随后添加一个   排除所有商务假期的日历。

在网址上查看更多内容 http://www.quartz-scheduler.org/documentation/quartz-2.x/tutorials/tutorial-lesson-04.html

答案 1 :(得分:0)

在WithCronSchedule上使用StartAt不会像我想象的那样工作。这里的开始只是告诉触发器应该何时开始使用cron。

根据您的要求,您可以根据需要创建一个cron。例如:

0 0 5,10 * * ?

每天早上5点和10点触发。

除此之外,你可能最好在每个特定日期制作一个触发器,如果​​你需要在schedulled run上取消它会更灵活。如果您将所有触发器设置在同一个触发器组中,您也可以立即将它们全部锁定