Quartz.NET触发器:在指定的时间间隔内运行一次

时间:2011-09-28 12:36:12

标签: scheduling quartz.net

我在Windows服务中使用Quartz.NET库来运行日常工作。我正在使用AdoJobStore。基本上我希望我的工作在午夜和凌晨1点之间的任何时间执行一次。因此,如果服务在午夜停止并且有人在00:30启动它,那么我希望当前执行该作业(仅一次),但如果服务在凌晨2点启动,我不希望当天执行该作业。 / p>

如何将触发器配置为在指定的时间间隔内仅运行一次?

1 个答案:

答案 0 :(得分:1)

看起来你需要一种自定义的“失火”行为。来自Quartz docs

  

失火说明

     

触发器的另一个重要特性是它的“失火指令”。   如果持久触发器“错过”其触发时间,则会发生失火   因为调度程序正在关闭,或者因为没有   Quartz的线程池中可用的线程,用于执行作业。该   不同的触发类型有不同的失火指令可用   给他们。默认情况下,他们使用“智能策略”指令 - 具有   基于触发器类型和配置的动态行为。当。。。的时候   调度程序启动时,会搜索具有的任何持久性触发器   失误,然后根据他们的个人更新每一个   配置了失火指令。当你开始使用Quartz时   自己的项目,你应该让自己熟悉失火   在给定触发器类型上定义的指令,以及   在他们的JavaDoc中解释。关于失火的更具体信息   指导将在特定的教程课程中给出   每种触发类型。

不幸的是,您不需要开箱即用。您需要安排工作准确地在午夜执行,然后implement custom misfire。应该可以使用ITriggerListener.TriggerMisfired