代码改变世界

不让System.Timers.Timer同一时间多次生成定期事件

2010-02-25 09:12    阅读(472)  评论(0)    收藏  举报


     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;   //   执行后再开始
}


参考:http://topic.csdn.net/u/20070425/11/fb78e8a3-03e7-4d82-a54c-8bd6de39f908.html

网站:http://www.91chahao.com/