[小菜一碟] 如何讓 Windows 工作排程器(Task Scheduler)以秒為單位來觸發程序?

一直以來,都以為 Windows 工作排程器(Task Scheduler)的重複工作間隔時間最小只能設到分鐘,無意中查到這篇文章,原來不是不行,是我不會。

Windows 排程的觸發時間是看設定的時間,它是可以細到秒的。

而且,觸發程序是可以新增多個的。

因此,我們可以利用這兩個特性,來讓 Windows 排程可以每 n 秒鐘觸發一次,假定我們想要排程每 30 秒觸發一次,就新增兩個觸發程序,分別一個在 00 秒觸發、一個在 30 秒觸發,然後每 1 分鐘重複一次,就像文章裡面所說的「Silly, but it works.」。

最後,有一個設定是很多人會忽略的,如果我們的工作在下一次排程觸發前執行不完怎麼辦? 在「設定」頁籤中有一個選項「如果工作已在執行中,下列規則將會套用(N):」可以讓我們依照工作的特性來調整,有四個選項可以設定:

  • 不要啟動新執行個體:排程觸發時,若上次的工作尚未執行完畢,則新工作不會執行。
  • 以平行方式執行新執行個體:排程觸發時,若上次的工作尚未執行完畢,依舊執行新工作,需注意資源競爭的問題。
  • 佇列新執行個體:排程觸發時,若上次的工作尚未執行完畢,將新工作 Queue 住,待上次的工作執行完畢後接著執行,需注意工作 Queue 的狀況。
  • 停止現有的執行個體:排程觸發時,若上次的工作尚未執行完畢,強制中止上次工作,並執行新工作。

相關資源

C# 指南
ASP.NET 教學
ASP.NET MVC 指引
Azure SQL Database 教學
SQL Server 教學
Xamarin.Forms 教學