我目前正在创建一个使用计时器间隔的Windows服务。此计时器每秒重复一次,但可能需要超过一秒的时间才能完成计时器Elapsed
事件,该计时器的创建方式如下:
Timer timer = new Timer();
timer.Enabled = true;
timer.Interval = 1000; // 1 second
timer.Elapsed += myFunction;
现在一个简单的问题:即使此计时器尚未完成Elapsed
事件,计时器是否继续,还是在Elapsed
事件完成后等待并继续?
System.Timers.Timer
类具有AutoReset
属性。
如果设置为 false
,计时器将只运行一次,允许您在功能完成后再次启动它。
如果将其设置为 true
,计时器将不会每秒停止并运行您的函数,除非弹出异常。
默认情况下,此属性设置为 true
是的,它确实如此
如果 SynchronizingObject 属性为 null,则会在线程池线程上引发 Elapsed 事件。如果已用事件的处理持续时间超过间隔,则可能会在另一个线程池线程上再次引发该事件。在这种情况下,事件处理程序应该是可重入的。
源