代码改变世界

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

    阅读(471)  评论(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/

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示