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"));

  用此控件运行很稳定,没有丢秒的现象,问题解决。

转载于:https://www.cnblogs.com/jingsha/p/5400464.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值