如何獲取Quartz.NET調度程序中安排的所有活動作業?我嘗試了GetCurrentlyExecutingJobs(),但它總是返回0.獲取Quartz.NET調度程序中的所有活動作業
6
A
回答
8
該方法似乎不起作用。
我發現的唯一的解決辦法是通過所有的工作循環:
var groups = sched.JobGroupNames;
for (int i = 0; i < groups.Length; i++)
{
string[] names = sched.GetJobNames(groups[i]);
for (int j = 0; j < names.Length; j++)
{
var currentJob = sched.GetJobDetail(names[j], groups[i]);
}
}
當作業被發現就意味着它仍然有效。 但是,如果將作業設置爲durable,那麼如果沒有關聯的觸發器,它將永遠不會被刪除。
在這種情況下該代碼工作得更好:
var groups = sched.JobGroupNames;
for (int i = 0; i < groups.Length; i++)
{
string[] names = sched.GetJobNames(groups[i]);
for (int j = 0; j < names.Length; j++)
{
var currentJob = sched.GetJobDetail(names[j], groups[i]);
if (sched.GetTriggersOfJob(names[j], groups[i]).Count() > 0)
{
// still scheduled.
}
}
}
UPDATE:
我做了一些調試看到GetCurrentlyExecutingJobs()
會發生什麼。
事實上,它返回正在執行的作業,但是一旦作業執行,元素將從集合中刪除。
您可以在QuartzScheduler類中檢查2個函數JobToBeExecuted
和JobWasExecuted
。
+0
我想獲得正在運行的作業?上述方法將返回所有暫停和正在運行的作業。 – VJAI
相關問題
- 1. 獲取Quartz.NET調度程序中計劃的所有任務
- 2. Quartz.net作業調度
- 3. 添加Quartz.net作業而不啓動調度程序
- 4. Quartz.NET scheduler.Interrupt(jobKey)正在中斷所有活動作業
- 5. 獲取Quartz.NET 2.0中的所有工作
- 6. 在Quartz.Net中調度依賴作業
- 7. 使用Quartz.NET調度Cron作業
- 8. Quartz.net調度程序不工作
- 9. 從Quartz中的調度程序獲取執行的作業
- 10. 獲取Quartz.NET中的所有觸發器
- 11. SWF:獲取工作流程啓動程序中所有活動的結果
- 12. 使用Quartz.Net進行作業調度 - 有些問題
- 13. 如何等待所有調度程序作業完成?
- 14. quartz.net - 關於調度程序的問題
- 15. Quartz.NET中的自動作業命名
- 16. 石英調度程序中斷作業?
- 17. 在Quartz.net中從正在運行的作業中獲取數據
- 18. Quartz.net調度程序內存泄漏
- 19. 爲您的應用程序獲取所有活動令牌
- 20. Q隊列中的所有作業都用於扭矩Pbs調度程序
- 21. 在Apache Aurora調度程序中列出所有作業的命令是什麼?
- 22. 作業的順序調度
- 23. Quartz.Net的cron觸發調度作業每45分鐘
- 24. Quartz.net在不同的服務器上調度作業
- 25. 在Quartz.Net中運行作業
- 26. Oracle:調度程序作業的持續時間作業
- 27. 石英調度程序丟失作業
- 28. 作業調度程序每天運行
- 29. dbms_job/Oracle作業調度程序
- 30. 石英調度程序作業遷移
該方法不能識別簇,因此,將'quartz.jobStore.clustered'設置爲false將返回正確的數字 –