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是基於線程html
除了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多線程
出處:http://www.cnblogs.com/tianciliangen/p/4910503.htmlspa