c# winform 定時器控件到期不執行的問題。


一個測試用小程序中用了兩個timer控件(System.Windows.Forms.Timer)來執行定時任務。其中一個定時器timerA在異步獲取到資源后會在這個異步的task(System.Threading.Tasks )中啟動執行。日志打印中發現所有的啟動條件都滿足,但是無論如何都看不到此task執行。

於是翻了翻MSDN,微軟對這個控件的定義如下:實現按用戶定義的時間間隔引發事件的計時器。 此計時器最宜用於 Windows 窗體應用程序中,並且必須在窗口中使用出處。也就意味着,如果不是UI線程的話,定時器可能是不會被執行的。

解決辦法也就出來了:使用System.Timers命名空間下的Timer。

微軟的描述:

Windows 窗體計時器組件是單線程的,且限制為55毫秒的准確度。 如果需要具有更高准確性的多線程計時器,請使用 Timer 命名空間中的類 System.Timers

從上述描述中可以看出,不僅timer控件(System.Windows.Forms.Timer)只能在窗口中使用,而且精度也不能保證,只能用來執行簡單的任務。

改為 System.Timers 的timer后,程序運行正常。

 


免責聲明!

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



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