幾種定時器(timer)的區別


在.NET的框架之內定時器有以下幾種,各自的特點是:

System.Windows.Forms.Timer

  • System.Windows.Forms.Timer (僅 .NET Framework),這是一個觸發事件並定期在一個或多個事件接收器中執行代碼的 Windows 窗體組件。 組件沒有用戶界面,旨在在單線程環境中使用;它在 UI 線程上執行。

如果Tick事件內的代碼未執行完成,但是下一次Tick定時已經達到會發生什么?不會強行終止未完成的代碼,也不會因為上一次Tick事件代碼未執行完成而不再觸發,而是類似於棧的形式將之前未執行完成的代碼堆積,后觸發的Tick事件內的代碼先執行,先觸發未完成的代碼后執行。

System.Web.UI.Timer

  • System.Web.UI.Timer (僅 .NET Framework),是一種定期執行異步或同步網頁回發的 ASP.NET 組件。

System.Threading.Timer

  • System.Threading.Timer,它按固定的時間間隔對線程池線程執行單個回調方法。 回調方法是在實例化計時器時定義的,無法更改。 與 System.Timers.Timer 類一樣,此類用作多線程環境中基於服務器的或服務組件;它沒有用戶界面,在運行時不可見。

各種用法較為原始,用的較少。

System.Timers.Timer

  • System.Timers.Timer,它將觸發事件,並定期在一個或多個事件接收器中執行代碼。 類旨在用作多線程環境中基於服務器的組件或服務組件;它沒有用戶界面,在運行時不可見。

是對System.Threading.Timer的一層封裝。可以用SynchronizingObject屬性實現在主線程運行,也可以不設置SynchronizingObject屬性,是事件在線程池里觸發,作為后台線程使用,基本能滿足開發需求。

DispatcherTimer

  • DispatcherTimer,Dispatcher隊列中的計時器,不能保證正好在設置的時間間隔發生時執行計時器,但能保證不會在時間間隔發生之前執行計時器。何時執行DispatcherTimer操作取決於隊列中其他作業及其優先級。

隨着時間的推移用不好的話,太吃內存了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM