System.Timers.Timer

Timer 組件是基於服務器的計時器,它使您能夠指定在應用程序中引發Elapsed 事件的週期性間隔。然後可以操控此事件以提供定期處理。例如,假設您有一臺關鍵性服務器,必須每週7 天、每天24 小時都保持運行。可以創建一個使用Timer 的服務,以定期檢查服務器並確保系統開啓並在運行。如果系統不響應,則該服務可以嘗試重新啓動服務器或通知管理員。

 

基於服務器的Timer 是爲在多線程環境中用於輔助線程而設計的。服務器計時器可以在線程間移動來處理引發的Elapsed 事件,這樣就可以比Windows 計時器更精確地按時引發事件。

 

基於Interval 屬性的值,Timer 組件引發Elapsed 事件。可以處理該事件以執行所需的處理。例如,假設您有一個聯機銷售應用程序,它不斷向數據庫發送銷售訂單。編譯發貨指令的服務分批處理訂單,而不是分別處理每個訂單。可以使用Timer 每30 分鐘啓動一次批處理。

 

注意

 

當AutoReset設置爲false時,Timer只在第一個Interval過後引發一次Elapsed事件。若要保持以Interval時間間隔引發Elapsed 事件,請將AutoReset設置爲true。

Elapsed事件在ThreadPool線程上引發。如果Elapsed事件的處理時間比Interval長,在另一個hreadPool線程上將會再次引發此事件。因此,事件處理程序應當是可重入的。

 

注意

 

在一個線程調用Stop 方法或將Enabled 屬性設置爲false 的同時,可在另一個線程上運行事件處理方法。這可能導致在計時器停止之後引發Elapsed 事件。Stop 方法的示例代碼演示了一種避免此爭用條件的方法。

如果和用戶界面元素(如窗體或控件)一起使用Timer,請將包含有Timer 的窗體或控件賦值給SynchronizingObject 屬性,以便將此事件封送到用戶界面線程中。Timer 在運行時是不可見的。

 

 

 

幾點說明

 

1 private System.Timers.Timer _TestTimerEvent= new Timer();

1   

 

1、默認的週期是0.1秒執行一次;

 

2、AutoReset的初始值爲true.

 

3、它的timer機制和System.Threading.Timer 原理是一樣的。

 

4、每次週期(Timer)運行一次會新起一個線程。

 

5、如果Elapsed事件的處理時間比Interval長,它每個週期執行都會新起一個線程,這個線程的執行時間不受interval的限定,可以比interval長,因爲一個新週期執行,又會新起一個線程,Timer起的線程週期就是事件處理時間。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章