System.Timers.Timer 在使用时,每隔一个时间间隔,就会产生一个定期事件,而并不关心上次的产生的事件是否已经完成。
有时候我们设定的时间间隔很短,但是事件的执行时间可能很长,并且事件执行中的资源只能提供给一个事件单独使用,这时候我们希望一个时间间隔只有一个事件在执行,即在当前事件执行完后,下一个时间间隔才开始,然后再产生下一个事件(如图:时间间隔1---->事件1----->时间间隔2----->事件2 ...)
代码如下:
System.Timers.Timer timer
=
new
System.Timers.Timer();
timer.Interval = 1000 ;
timer.Elapsed += new ElapsedEventHandler(timerEvent);
private void timerEvent( object sender, EventArgs e)
{
((Timer)sender).Enabled = false ; // 执行前先停止计时
// do something
((Timer)sender).Enabled = true ; // 执行后再开始
}
timer.Interval = 1000 ;
timer.Elapsed += new ElapsedEventHandler(timerEvent);
private void timerEvent( object sender, EventArgs e)
{
((Timer)sender).Enabled = false ; // 执行前先停止计时
// do something
((Timer)sender).Enabled = true ; // 执行后再开始
}
参考:http://topic.csdn.net/u/20070425/11/fb78e8a3-03e7-4d82-a54c-8bd6de39f908.html