Timer应该是单线程的,跟窗体同一线程,所以应该是轮流执行,如果其中一个执行时间要很久,其它Timer也得等它执行完 。
举例:
以下这个例子就可以说明,
2个计时器都是100毫秒触发一次,
但第一个timer里处理时间>100毫秒,这里用sleep1秒模拟,
这样应该1秒后a=1,而b=10,但结果是a和b相差无几,
说明第2个计时器被阻塞了,
用System.Windows .Forms .Timer更明显
总结:不要使用单片机开发的思维,c语言是顺序执行的,C#是多线程分时执行的。
C#中UI线程使用多个定时器不会造成中断冲突,但会造成线程阻塞
最新推荐文章于 2024-05-27 09:39:22 发布