Timer的區別

System.Windows.Forms.Timer , 該 Timer 必須在 Winform 程序中使用,依賴於某個窗體;當窗體的主ui線程正在執行其他的消息時, Timer的時間就會被丟棄
System.Timers.Timer 該Timer的事件默認執行在一個線程池中的工作線程(worker thread)中,不會像 Windows.Forms.Timer 那樣一但主消息線程忙,就會丟失事件;
System.Threading.Timer , 這個Timer 總的來講是對具體應用環境以來最小的,所以可以在任何多線程環境中是用的Timer。 時間處理代碼也是在線程池中的線程上執行。但是由於靈活性,它就沒有提供很多現有的比如 直接訪問 窗體控間,或者 通過設置 SynchronizingObject 屬性 來指定執行線程。在對線程環境中我們需要自己編碼來提供代碼的同步,互斥等安全性。


簡單的說在一個winfrom的UI頁面裏定時出發用Forms.Timer(精度會有丟失),單線程的定時啓動用Threading.Timer,如果有併發訪問互斥資源的定時要求用Timers.Timer


另外,如果是單線程的定時啓動,可以優先用Spring Quartz

發佈了73 篇原創文章 · 獲贊 6 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章