2016-06-10 60 views
1

我正在創建一個使用定時器間隔的Windows服務。這個計時器重複每秒,但它可能需要更長的時間超過一秒鐘可以完成Elapsed事件定時器,這是如下創建的:如果功能沒有完成,定時器是否繼續

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

現在簡單的問題:即使沒有這是否計時器繼續Elapsed事件還未完成,還是定時器等待並在Elapsed事件結束時繼續?

回答

3

System.Timers.Timer類有一個AutoReset屬性。

如果設置爲false,計時器將只運行一次,允許您在功能完成時再次啓動計時器。

如果將其設置爲true,定時器不會停止並且每秒運行您的函數,除非彈出一個異常。

默認情況下,此屬性is set to true

3

是的,它

如果物業對於SynchronizingObject爲null,經過的事件引發的一個線程池線程。如果處理Elapsed事件的持續時間比Interval長,則可能會在另一個ThreadPool線程上再次引發該事件。在這種情況下,事件處理程序應該是可重入的。

Source

相關問題