如果上一个事件仍然有效,System.Timers.Timer是否已经过了事件?
例如,我设置Interval
100毫秒,但处理程序中的代码工作200毫秒。
_taskTimer = new System.Timers.Timer();
_taskTimer.Interval = 100;
_taskTimer.Elapsed += _taskTimer_Elapsed;
void _taskTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
Work(); // works 200 ms.
}
Work()
方法结束时,计时器“等待”吗?或者执行一个新的?
谢谢!
答案 0 :(得分:3)
System.Timers.Timer
(多线程定时器)是多线程定时器。这意味着它在多个线程上执行它的elapse事件,这意味着它不会等待先前的过去事件。
如果你想等待上一个elapse事件完成,你可以使用System.Windows.Timer
(单线程计时器) - 这是单线程计时器将仅在单线程(UI线程)上执行事件,创建计时器。 / p>
你可以在这里阅读更多相关信息:{Alberthari撰写的Timers
答案 1 :(得分:2)
内部system.timers.timer也使用system.threading.timers,因此即使在经过新的执行后,执行过程也会继续。
查看System.Timers.Timer的源代码:Timers.Cs
答案 2 :(得分:1)
它将继续执行不同的线程
供参考,您可以访问this页面