我在Windows服务中使用Quartz.NET库来运行日常工作。我正在使用AdoJobStore。基本上我希望我的工作在午夜和凌晨1点之间的任何时间执行一次。因此,如果服务在午夜停止并且有人在00:30启动它,那么我希望当前执行该作业(仅一次),但如果服务在凌晨2点启动,我不希望当天执行该作业。 / p>
如何将触发器配置为在指定的时间间隔内仅运行一次?
答案 0 :(得分:1)
看起来你需要一种自定义的“失火”行为。来自Quartz docs:
失火说明
触发器的另一个重要特性是它的“失火指令”。 如果持久触发器“错过”其触发时间,则会发生失火 因为调度程序正在关闭,或者因为没有 Quartz的线程池中可用的线程,用于执行作业。该 不同的触发类型有不同的失火指令可用 给他们。默认情况下,他们使用“智能策略”指令 - 具有 基于触发器类型和配置的动态行为。当。。。的时候 调度程序启动时,会搜索具有的任何持久性触发器 失误,然后根据他们的个人更新每一个 配置了失火指令。当你开始使用Quartz时 自己的项目,你应该让自己熟悉失火 在给定触发器类型上定义的指令,以及 在他们的JavaDoc中解释。关于失火的更具体信息 指导将在特定的教程课程中给出 每种触发类型。
不幸的是,您不需要开箱即用。您需要安排工作准确地在午夜执行,然后implement custom misfire。应该可以使用ITriggerListener.TriggerMisfired
。