2011-09-28 70 views
1

我在Windows服務中使用Quartz.NET庫來運行日常工作。我正在使用AdoJobStore。基本上我希望我的工作在午夜和凌晨1點之間的任何時候執行一次。因此,如果服務在午夜停止,並且有人在00:30開始,我希望這個工作被執行(只有一次),但如果服務在凌晨2點開始,我不希望當天執行這項工作。Quartz.NET觸發器:在指定的時間間隔內運行一次

如何將觸發器配置爲在指定的時間間隔內只運行一次?

回答

1

它看起來像你需要一個自定義的'失火'行爲。石英docs

失火說明

觸發器的另一個重要特性是它的 「失火指令」。 如果由於計劃程序正在關閉或Quartz的線程池中沒有可用的線程來執行作業,持久性觸發器「未命中」其觸發時間爲 ,則會發生失火。 不同的觸發器類型對它們有不同的失火指令 。默認情況下,他們使用「智能策略」指令 - 它具有基於觸發器類型和配置的動態行爲 。當 調度程序啓動時,它將搜索任何具有 失誤的持續觸發器,然後基於它們各自的 配置的失火指令更新它們中的每一個。當您在自己的項目中開始使用Quartz時,應該熟悉在給定的觸發器類型上定義的錯誤 指令,並且熟悉在其JavaDoc中解釋的 。關於失火 的更多具體信息將在每個觸發類型的 特定教程課程中給出。

不幸的是,您所需要的行爲並不支持開箱即用。你需要安排你的工作在午夜完成,然後implement custom misfire。應該可以使用ITriggerListener.TriggerMisfired

相關問題