C# Winform時間控件使用


     沒有真正意義上做過winform的項目,在很多年前有過一段實習經歷,后來工作中只是寫過一些小工具用來輔助日常開發。

     這幾天做一個winform界面的小程序,有顯示系統時間的需求,最簡單的做法是拖一個Timer控件,設置好間隔時間為1000毫秒,然后在Tick事件里給控件賦值,而且不用考慮線程回寫UI的問題。

     在很早以前就聽說System.Windows.Forms下的Timer控件有記時不精准的情況,通過實際的觀察確實有丟秒的現象,雖然不是很嚴謹的程序,但還是有必要解決這個問題。

     取而代之的是用System.Timers.Timer,手寫幾行代碼同樣也能達到效果。

System.Timers.Timer clock = new System.Timers.Timer(1000);

clock.Elapsed +=timer_Elapsed;
clock.AutoReset = true;
clock.Enabled = true;

    用該方法給界面控件賦值會提示跨線程操作UI的異常,.net提供了很便捷的方式來回寫控件,解決線程間通訊的問題。

Action<string> action = (x) => { this.lbClock.Text = x.ToString(); };              
this.lbClock.Invoke(action, DateTime.Now.ToString("HH:mm:ss"));

  用此控件運行很穩定,沒有丟秒的現象,問題解決。


免責聲明!

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



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