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