我正在与在Windows服务的System.Timers.Timer一个问题。我基本上用下面的代码设置定时器了在碱轮询服务类:System.Timers.Timer间隔复位造成重启
_serviceTimer.Elapsed += OnElapsedTime;
_serviceTimer.Interval = ServiceTimerInterval.TotalMilliseconds;
_serviceTimer.AutoReset = false;
_serviceTimer.Enabled = true;
当OnElapsedTime火灾,我要禁用计时器和间隔设置为基于查找不同的值。问题是当我改变它实际重新启动定时器的时间间隔时。在msndn文档中提到了这种奇怪的行为:
注意: 如果Enabled和AutoReset都设置为false,并且定时器先前已启用,则设置Interval属性会导致Elapsed事件一次,如如果Enabled属性已被设置为true。要设置间隔而不引发事件,可以暂时将AutoReset属性设置为true。 Timer.Interval
在onelapsed事件中,我有这样的:
_serviceTimer.Enabled = false;
double newIntervalSetting = newSetting;
base._serviceTimer.AutoReset = true;
base._serviceTimer.Interval = newIntervalSetting;
base._serviceTimer.AutoReset = false;
//reenable after processing
的问题是间隔变化仍然开始倒计时,最终触发中断,即使我要改变自动复位设置为true之前的事件间隔。启用的时间始终保持为假,但事件仍然发生。我不确定我是否误解了msdn文档中有关正确的方法。谁能帮我吗?
是啊,这是一个悲惨的类。这就是为什么存在System.Threading.Timer。 – 2011-03-29 22:18:47
是的,它确实似乎有限制。我想我会使用下面的快捷方式,然后在我有机会时切换它。 – gleasonomicon 2011-03-30 15:01:34