2

我目前正在创建一个使用计时器间隔的 Windows 服务。此计时器每秒重复一次,但完成计时器事件可能需要超过一秒Elapsed的时间,其创建如下:

Timer timer = new Timer();
timer.Enabled = true;
timer.Interval = 1000; // 1 second
timer.Elapsed += myFunction;

现在是一个简单的问题:即使它还没有完成Elapsed事件,这个计时器是否继续,或者当事件完成时计时器是否等待并继续Elapsed

4

2 回答 2

4

该类System.Timers.Timer有一个AutoReset属性。

如果设置为false,计时器将只运行一次,允许您在功能完成时再次启动它。

如果您将其设置为true,则计时器将不会停止并每秒运行您的函数,除非弹出异常。

默认情况下,此属性设置为true

于 2016-06-10T12:06:33.690 回答
3

是的,它确实

如果 SynchronizingObject 属性为 null,则在 ThreadPool 线程上引发 Elapsed 事件。如果 Elapsed 事件的处理持续时间超过 Interval,则该事件可能会在另一个 ThreadPool 线程上再次引发。在这种情况下,事件处理程序应该是可重入的。

资源

于 2016-06-10T12:04:03.093 回答