伺服器端計時器簡介
更新:2007 年 11 月
伺服器端計時器允許您指定在應用程式中引發事件的週期性間隔。然後您可以操控這個事件來提供標準處理。例如,假設您有一個重要的伺服器必須要保持一個星期 7 天,一天 24 小時的持續執行。您可以建立一個服務,為利用計時器來定期檢查重要的伺服器以確保系統啟動並在執行中。假如系統沒有回應,這個服務可以嘗試去重新啟動伺服器或是通知管理員。
注意事項: |
---|
伺服器計時器的間隔是以毫秒為單位來指定。 |
伺服器計時器、Windows 計時器和執行緒計時器
在 Visual Studio 和 .NET Framework 中有三種計時器控制項:
伺服器端計時器,您可以將其加入至 [工具箱] 中
Windows 架構計時器,這種計時器永遠都會在 [工具箱] 中
執行緒計時器,這種計時器可透過程式設計方式來使用
Windows 架構計時器已針對 Windows Form 應用程式完成最佳化。伺服器端的計時器是傳統計時器的更新,它在伺服器的環境中最適合使用。執行緒計時器是簡單的輕量計時器,使用回呼方法而不使用事件,同時由執行緒集區執行緒提供服務。
在 Win32 的架構下有兩種執行緒:UI 執行緒,以及背景工作執行緒。UI 執行緒在大多數的時間裡都保持著閒置的狀態並且等待訊息到達它的訊息迴圈中。一旦收到訊息,它便處理這個訊息然後等待下一個訊息的到達。另外,背景工作執行緒則是用於執行背景處理而不使用訊息迴圈。Windows 計時器和伺服器端計時器兩者都使用 Interval 屬性執行。執行緒計時器的間隔是在 Timer 建構函式中設定。計時器是針對不同目的而設計的,依執行緒的處理方式做為辨識:
Windows 計時器是設計用在單一執行緒的環境之下,在此,利用 UI 執行緒來執行處理。Windows 計時器的正確率限制在 55 毫秒。這些傳統的計時器需要使用者的程式碼中有一個可以使用的 UI 訊息幫浦,並且一直從相同的執行緒作業,或是將呼叫整理到另外一個執行緒。對於一個 COM 元件,這可能對效能有不利的影響。
伺服器端計時器是為了在多執行緒環境下使用背景工作執行緒而設計的。因為它們使用不同的架構,伺服器端計時器可能要比 Windows 計時器更為精確。伺服器端計時器可以在執行緒間移動以處理被引發的事件。
執行緒計時器對於執行緒上不提取訊息的案例中相當有用。例如,Windows 架構計時器仰賴作業系統的計時器支援,而如果您沒有提取執行緒上的訊息,與計時器關聯的事件就不會發生。執行緒計時器在這種情況中更有用。
Windows 計時器位於 System.Windows.Forms 命名空間中、伺服器計時器位於 System.Timers 命名空間中,而執行緒計時器則位於 System.Threading 命名空間中。