如果上一个事件仍然有效,System.Timers.Timer可以过去事件吗?

时间:2016-01-13 06:21:38

标签: c# timer

如果上一个事件仍然有效,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()方法结束时,计时器“等待”吗?或者执行一个新的? 谢谢!

3 个答案:

答案 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页面