我需要創建一些windows服務,它會每隔一小時經常執行一次。問題是 - 我應該使用哪個計時器控制:System.Timers.Timer或System.Threading.Timer之一?我在問,因爲我一直在通過論壇閱讀,我對這兩個問題都得到了一些混合評論。另外,由於我對編程非常陌生,所以解釋起來很難。謝謝。如何設置Windows Service應用程序,C#的自動重新啓動?
回答
我使用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();
}
你可以一步一步等待這段代碼正在做什麼?我相信我瞭解它,但我不完全確定。這是否說每秒都做什麼功能/代碼放置在「//處理事件」?謝謝。 – 2011-05-10 19:23:42
@Dante - myTimer將在myTimer.Start()後的一秒鐘內調用myTimer_Elapsed。一旦進入myTimer_Elapsed,myTimer停止,你的處理代碼被執行(無論你想在定時器激發時發生什麼),然後myTimer重新啓動。如果您的處理在下一個時間間隔發生之前完成,則您不必在每次處理已發生事件時都停止並啓動每個計時器的計時器。 – 2011-05-10 23:34:43
閱讀@喬恩飛碟雙向的定時器寫了起來:http://www.yoda.arachsys.com/csharp/threads/timers.shtml
- 1. QT4:如何重新啓動應用程序?重新設置?
- 2. 重新啓動後Windows Service不會自動啓動
- 3. [Android]應用程序重新啓動設備後重新啓動
- 4. 重新啓動時自動啓動應用程序
- 5. 自動更新位置而不重新啓動應用程序
- 6. 在應用程序被終止後重新啓動Android Started Service
- 7. 如何在Windows啓動時自動啓動應用程序?
- 8. 如何重新啓動我的C#移動應用程序?
- 9. 如何重新啓動設備後重新啓動應用程序?
- 10. 在Windows上啓動電子應用程序重新啓動
- 11. 自動更新後重新啓動我的應用程序?
- 12. 如何啓動Windows Service啓動事件?
- 13. C#:自動重啓程序
- 14. 重新啓動應用程序時的流星自動刷新
- 15. 在設備重新啓動時啓動iOS應用程序
- 16. 鉻/鉻應用程序更新後自動重新啓動
- 17. 如何確定Windows應用程序是否在Windows啓動時自動啓動?
- 18. 在機器重啓時自動重啓應用程序掛起應用程序
- 19. 市場更新後自動重新啓動應用程序
- 20. 如何重新啓動我自己的qt應用程序?
- 21. 如何讓您的java應用程序自行重新啓動
- 22. Windows上的C#應用程序自動啓動開始
- 23. 應用程序何時重新啓動?
- 24. 自動重新啓動你的應用程序
- 25. 重新啓動Java Swing應用程序
- 26. 如何設置一個C++程序在Windows啓動時自動啓動?(通過Windows服務解決方案)
- 27. 如何設置應用程序啓動應用程序變量
- 28. 將重新啓動應用程序重新啓動前面
- 29. 如何在Windows 8中重新啓動Windows應用商店應用程序
- 30. 如何重新啓動在Windows中編寫的控制檯c應用程序?
請注意,您實際上可能想要使用計劃任務,而不是使用服務來執行定期重複任務。 – 2011-05-09 15:42:05