後重新啓動INTERVALL我有一個項目,我用TopShelf
和TopShelf.Quartz
如何強制quartz.net作業完成
繼this example我建設我的工作與
s.ScheduleQuartzJob(q =>
q.WithJob(() => JobBuilder.Create<MyJob>().Build())
.AddTrigger(() => TriggerBuilder.Create()
.WithSimpleSchedule(builder => builder
.WithIntervalInSeconds(5)
.RepeatForever())
.Build())
);
這觸發我的工作即使前一次仍在運行,每五秒鐘一次。我真正想做的是開始一項工作,完成後等待五秒鐘,然後重新開始。這是可能的還是我必須實現我自己的邏輯(例如通過一個靜態變量)。
我想提到DisallowConcurrentExecution作爲一種可能的解決方案,但你的問題是「*完成後*等待5秒鐘,然後重新開始」。 – stuartd 2014-09-23 13:53:34
是的,我的解釋有點誤導。我的工作可以在零秒和一分鐘之間運行(取決於要處理的數據量)。使用'DisallowConcurrentExecution',我的作業每五秒執行一次,或者在執行後立即執行超過五秒鐘。在我瞭解這個屬性之前,我認爲最好的解決方案是告訴Quartz在工作完成後開始填充,而不是在解僱工作之後開始填充。對於我來說,屬性方法已經足夠了,但我非常肯定,JobListener方法會派上用場,因爲我打算向我的應用程序添加更多作業。 – 2014-09-23 14:15:48
另請注意,您需要從具體類型'JobBuilder.Create'而不是'JobBuilder.Create '創建作業,以便拾取屬性。 –
fearofawhackplanet
2014-10-15 17:23:10