我正在使用quartz.net 2.3 作業標有DisallowConcurrentExecution屬性。當一個作業由TriggerJob手動啓動時,如果它已經在進行,它就不會啓動,這沒關係。但是當上一次執行完成時它會立即再次啓動。 如果在作業進行時被解僱,是否有可能阻止將來的執行?如何防止石英作業多次運行
4
A
回答
1
是的。您可以檢索作業的所有觸發器,將它們與正在執行的觸發器進行比較,如果它們在其之後計劃,則取消調度作業(觸發器將被刪除)。
所以,從你的工作:
public void Execute(IJobExecutionContext context)
{
var currentlyExecutingTrigger = context.Trigger;
var currentlyExecutingJobkey = context.JobDetail.Key;
var newTriggers = context.Scheduler.GetTriggersOfJob(key);
//if trigger was scheduled after currently executing trigger
foreach (var newTrigger in newTriggers)
{
if (newTrigger.StartTimeUtc >= trigger.StartTimeUtc)
{
//delete it
context.Scheduler.UnscheduleJob(newTrigger.Key);
}
}
}
1
如何防止從發射同時作業?
Quartz.NET 2.x的
實施IJob也裝點[DisallowConcurrentExecution]屬性的作業類。有關更多信息,請閱讀DisallowConcurrentExecutionAttribute的API文檔。
你可以找到它有文檔中 enter link description here
0
我認爲你正在尋找這樣的:
myJobTrigger.MisfireInstruction = MisfireInstruction.CronTrigger.DoNothing;
我還沒有嘗試過,但看起來它與DisallowConcurrentExecution屬性效果很好
相關問題
- 1. 石英防止作業執行jobToBeExecuted
- 2. 石英作業只運行一次
- 3. 石英彈簧作業執行多次。只需運行一次
- 4. 石英防止作業重疊
- 5. 石英作業多次觸發
- 6. 如何防止石英作業立即開始
- 7. 石英作業未運行,但石英錶正在更新
- 8. 石英運行一次
- 9. 防止石英調度程序作業立即啓動
- 10. 無法與石英運行多個作業
- 11. 不能用石英插件使用grails運行多個作業
- 12. 石英CRON只觸發作業一次
- 13. 如何使用石英運行駱駝計劃作業
- 14. 如何配置石英作業在兵馬俑羣上運行?
- 15. 如何防止石英內存泄漏
- 16. 如何防止cron作業執行,如果它已經運行
- 17. 石英工作未運行
- 18. 石英:觸發多個作業
- 19. 如何爲Java的石英cron作業
- 20. 如何防止正在運行的crontab作業執行
- 21. 如何手動停止/中斷石英調度程序作業
- 22. 如何停止石英計劃程序中的特定作業
- 23. 石英API - 瞭解執行作業
- 24. 恢復卡石英作業
- 25. 石英作業不啓動
- 26. 石英作業重疊
- 27. 石英作業調節
- 28. 防止js函數運行多次
- 29. jquery防止函數運行多次
- 30. 每天執行N次作業的一個石英錶達式