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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值