C# 的三个TImer

1、System.Timers.Timer应该是底层定时器,是比线层还底层、优先级更高的存在,是硬件定时器,理论上,它是最精准的。如果程序设计出错,你会发现exception里有“中断”字样、“外部访问”字样,中断机制是从30年前的DOS系统开始就有了。

2、System.Threading.Timer顾名思义是线程级别的定时器,它的时间是“线程时间”,放在主线程里调度子线程和逻辑模块是合适的,不会像第一个定时器,主线程退出了它可能还在。

3、System.Windows.Forms.Timer则是基于winform的定时器,它与form窗体绑定在一起,如果它阻塞,form界面就不会响应。它比较适合处理纯form元素的功能。另一个与它类似的是wpf里的System.Windows.Threading.DispatcherTimer,也是界面级的定时器。由于form和wpf的机制不同,所以就控件本身而言,不说cpu运算代价,form可以实现控件的并行效果,理论上wpf则不行。

第一个用错:导致野线程
第二个用错:逻辑功能停摆
第三个用错:界面卡死

这也是为什么C# 设计上强化了消息机制,消息本质上是一个0等待的、只执行一次的Timer,等于C#把定时器封装了,以此减少程序员的使用Timer的错误。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值