如果计时器在新的循环时间到来之前无法完成所有工作怎么办?

Far*_*hid 47 c# multithreading timer

假设我们有一个每10分钟运行一次的计时器.如果处理周期超过10分钟怎么办?新线程是否会启动?它会中断当前的操作吗?如果单个对象在计时器内发生变异怎么办?

很抱歉,如果我没有提及任何代码,因为问题很明确,而且我想从多线程编程极客的角度来看完整的答案,而不是通过尝试通过示例应用程序测试它来找到一个松散的答案.实际上,我想知道其工作机制背后的逻辑.

Jim*_*hel 51

如果你正在使用System.Threading.TimerSystem.Timers.Timer,计时器将再次打勾,开始一个新的线程.有关避免该问题的方法,请参阅/sf/answers/730948221/.

如果您正在使用System.Windows.Forms.Timer,则在前一个处理完成之前不会发生新的刻度.

  • @ daniel.gindi:很有意思.我从来没有遇到过.NET计时器的问题,除非我试图做一些需要超过15毫秒分辨率的东西.我的经验是,如果您的处理无法跟上计时器频率,那么您需要减慢计时器或优化计时器回调.但要实现我自己的计时器?似乎很多工作收获甚微. (3认同)