System.Windows.Forms.Timer、System.Timers.Timer、System.Threading.Timer的差別和分別什么時候用


System.Windows.Forms.Timer、System.Timers.Timer、System.Threading.Timer的 區別和用法
http://space.itpub.net/12639172/viewspace-571197

http://msdn.microsoft.com/en-us/magazine/cc164015.aspx

 

==================================================

System.Windows.Forms.Timer執行的時候,如果你在過程中間加一個sleep整個的界面就死掉了,

但是另外兩個沒有這個情況,System.Timers.Timer、System.Threading.Timer!

System.Timers.Timer、System.Threading.Timer這兩個平時用的時候沒有發現太大的區別,定時的精度都差不多。

一般我個人用的話,還是用的System.Threading.Timer比較多,用編程的方法比較好用!

System.Windows.Forms.Timer是基於UI的
System.Timers.Timer是基於服務
System.Threading.Timer是基於線程

除了Timer只能用於界面,其他的事在沒看出區別 

 

System.Windows.Forms.Timer 還有 wpf那個timer 是單線程的 單次運行時間過長會影響下次觸發 精度差


System.Threading.Timer   都是多線程的 單次運行時間過長不會影響下次觸發

精度高

System.Threading.Timer 是一個簡單的輕量計時器,它使用回調方法並由線程池線程提供服務。不建議將其用於 Windows 窗體,因為其回調不在用戶界面線程上進行。System.Windows.Forms.Timer 是用於 Windows 窗體的更佳選擇。要獲取基於服務器的計時器功能,可以考慮使用 System.Timers.Timer,它可以引發事件並具有其他功能。 

在《CLR Via C#》中講多線程時有提到這3個計時器,但作者說System.Timers.Timer是對System.Threading.Timer的報裝,不推薦使用,但是在我的WEB項目中的Application_Start中我還是使用的這個而不是Threading.Timer,因為使用Threading.Timer時只執行了一次就不在執行了。 

對於計時器在B/S結構中的使用就復雜一些,一般我們把計時器放在Application_OnStart中,這樣全局維護一個計時器,可以進行定期備份數據庫,定期維護用戶等操作,而且方法寫作靜態的,以免被垃圾回收。而不建議在一般的aspx頁面中使用,因為服務器端的定時器對用戶這樣意義不大,完全可以使用JS代替。而且這個頁面的每個請求都可能引入一個新的定時器,導致系統崩潰。另外,定時器是ASP.NET進程,IIS有關,所以對用重要的執行任務,還是建議寫成服務或獨立程序放在服務器上執行好了。 

http://blog.itpub.net/12639172/viewspace-571197


免責聲明!

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



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