1. 程式人生 > >C# 中的定時器2

C# 中的定時器2

一、單執行緒定時器 1.System.Windows.Forms.Timer  WinForms定時器;單執行緒定時器,執行緒安全;執行在UI執行緒,可直接更新UI畫面;執行效率不高,適用於小任務。

2.System.Windows.Threading.DispatcherTimer  WPF定時器;單執行緒定時器,執行緒安全;執行在UI執行緒,可直接更新UI畫面;執行效率不高,適用於小任務。

System.Windows.Forms.Timer和System.Windows.Threading.DispatcherTimer通過繫結Tick事件執行定時任務,通過設定Interval屬性指定定時任務的時間間隔,開始計時使用Start()控制,停止計時使用Stop()控制。System.Windows.Forms.Timer和System.Windows.Threading.DispatcherTimer基於Windows訊息迴圈,應用程式會同步的處理計時器的訊息。除非Tick事件的處理程式碼執行的非常快,否則UI介面會變得響應緩慢,所以 WPF和WinForms的計時器僅適合於像更新畫面這樣的小任務,例如時鐘和倒計時等。

二、多執行緒定時器 1.System.Threading.Timer  基於回撥函式的多執行緒定時器。System.Threading.Timer是最簡單的多執行緒計時器。

2.System.Timers.Timer  基於事件的多執行緒定時器。System.Timers.Timer是對System.Threading.Timer的簡單包裝。定義一個System.Timers.Timer物件,繫結Elapsed事件,通過Start()方法啟動計時,通過Stop()方法或者Enable=False停止計時。AutoReset屬性設定定時器是否重複計時。  多執行緒定時器基於執行緒池,適合於執行耗時任務;多執行緒計時器需要考慮多執行緒重入問題。