Dot-Net

計劃的控制台應用程序與 Windows 服務?什麼時候適合使用每個

  • February 3, 2009

我剛剛讀到:將應用程序開發為 Windows 服務有什麼好處?但我仍然不確定何時使用 Windows 服務。

我有幾個任務需要每隔一段時間(即每 5 分鐘)執行一次。我應該使用哪種項目類型?是否有任何應該是 Windows 服務的應用程序類型的範例?

對於任何計劃任務,我通常會推荐一個 Windows 服務,原因如下:

  • 即使使用者未登錄 PC,Windows 服務也會執行(即使伺服器處於登錄提示符下也會執行)(***注意 - 這可能取決於您執行的 Windows 版本)。
  • 服務可以作為網路服務或本地系統或使用者等高權限帳戶執行 - 它們在這方面具有更多可配置性
  • 服務還內置了用於在執行時啟動、停止、重新啟動和暫停的選項(有時)
  • 您還可以為服務設置故障條件,例如如果它失敗了讓它自動重啟

至於可以是 Windows 服務的應用程序的其他範例,很多時候它們對遠端處理等應用程序很有用 - 您可以讓服務執行客戶端連接到的遠端處理伺服器。顯然,對於您希望在後台執行的數據處理任務,或者您希望在某些條件下發送電子郵件的過程等非常有用。

一般來說,我總是發現計劃任務更加脆弱和不可靠。除非你讓它們正確記錄,否則通常更難調試。

關於 Timer 的錯誤 - 如果您閱讀 MS 網站上的錯誤報告,您可以看到它是在 Timer_Elapsed 事件中呼叫“Stop”時引起的。答案很簡單——不要叫停。相反,將整個事情包裝在“IsRunning”布爾值的檢查中,並且僅在 IsRunning 為假時執行。即使計時器沒有問題,您仍然需要這樣做,因為如果您的執行時間長於計時器間隔,計時器可能會在您執行期間重新觸發。

無論如何,我仍然認為使用計劃任務是一個薄弱的解決方案,讓我回想起 Windows 95。

引用自:https://stackoverflow.com/questions/507674