今天遇到一個問題,調度器在啟動時無法立刻開始執行任務,代碼如下:
var trigger = TriggerBuilder.Create() .StartNow() //此處無效 .WithCronSchedule("0 0/30 10-20 * * ?") .Build();
F12 可以看到 StartNow() 注釋如下:
// // 摘要: // Set the time the Trigger should start at to the current moment - the trigger // may or may not fire at this time - depending upon the schedule configured // for the Trigger. // // 返回結果: // the updated TriggerBuilder public TriggerBuilder StartNow();
在 stockoverflow 上查找結果如下
地址:http://stackoverflow.com/questions/19219560/quartz-trigger-builder-startnow-not-firing-the-trigger-during-the-start
由上述得知,當使用 Cron 表達式時,StartNow 方法不會起任何效果,Cron 有其自己的執行時間。目前看來 StartNow 應該只適用於 SimpleTrigger 觸發器。
解決方法:
1.如上圖,增加一個僅有 StartNow 的觸發器來立刻觸發 Job
2.可在 scheduler.Start() 啟動前手動調用執行 Job 一次