2011-05-09 94 views
0

我需要創建一些windows服務,它會每隔一小時經常執行一次。問題是 - 我應該使用哪個計時器控制:System.Timers.Timer或System.Threading.Timer之一?我在問,因爲我一直在通過論壇閱讀,我對這兩個問題都得到了一些混合評論。另外,由於我對編程非常陌生,所以解釋起來很難。謝謝。如何設置Windows Service應用程序,C#的自動重新啓動?

+1

請注意,您實際上可能想要使用計劃任務,而不是使用服務來執行定期重複任務。 – 2011-05-09 15:42:05

回答

0

我使用System.Timers.Timer在我的Windows服務。這很容易控制和掛鉤。當您鍵入「myTimer.Elapsed + = ...」時,VS 2010的Intellisense甚至會創建已用事件處理程序。

您也可以在事件處理程序開始時停止計時器,並在最後重新啓動計時器要在事件處理程序在長時間運行處理完成之前觸發定時器。例如:

System.Timers.Timer myTimer; 
void Main() 
{ 
    myTimer = new System.Timers.Timer(1000); 
    myTimer.Elapsed += new System.Timers.ElapsedEventHandler(myTimer_Elapsed); 
    myTimer.Start(); 
} 

void myTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) 
{ 
    myTimer.Stop(); 
    // process event 
    myTimer.Start(); 
} 
+0

你可以一步一步等待這段代碼正在做什麼?我相信我瞭解它,但我不完全確定。這是否說每秒都做什麼功能/代碼放置在「//處理事件」?謝謝。 – 2011-05-10 19:23:42

+0

@Dante - myTimer將在myTimer.Start()後的一秒鐘內調用myTimer_Elapsed。一旦進入myTimer_Elapsed,myTimer停止,你的處理代碼被執行(無論你想在定時器激發時發生什麼),然後myTimer重新啓動。如果您的處理在下一個時間間隔發生之前完成,則您不必在每次處理已發生事件時都停止並啓動每個計時器的計時器。 – 2011-05-10 23:34:43

相關問題