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