日期:2014-05-18  浏览次数:20834 次

Windows Service 多个timer如何不同时执行?
描述
在Windows Service 中,定义了三个timer,都是每分钟执行一次,并且都访问数据库

C# code

            timer1= new System.Timers.Timer();
            timer1.Enabled = true;
            timer1.Interval = 60000;
            timer1.Elapsed += new System.Timers.ElapsedEventHandler(this.timer1_Elapsed);

            timer2= new System.Timers.Timer();
            timer2.Enabled = true;
            timer2.Interval = 60000;
            timer2.Elapsed += new System.Timers.ElapsedEventHandler(this.timer2_Elapsed);

            timer3= new System.Timers.Timer();
            timer3.Enabled = true;
            timer3.Interval = 60000;
            timer3.Elapsed += new System.Timers.ElapsedEventHandler(this.timer3_Elapsed);




问题
1、同一时间,如何只执行一个timer,其它的等待?
2、这个执行中的timer,未结束前,不开始自身的下一次?

预期的效果
同一时间,只有一个timer执行,且不会反复执行,结束后执行其它待等中的timer。

------解决方案--------------------
2:

当 AutoReset 设置为 false 时,Timer 只在第一个 Interval 过后引发一次 Elapsed 事件。若要保持以 Interval 时间间隔引发 Elapsed 事件,请将 AutoReset 设置为 true。

来自msdn:
http://msdn.microsoft.com/zh-cn/library/system.timers.timer(v=vs.80).aspx