我想在我的服務中使用計時器。但我聽說定時器導致死鎖問題。 假設如果我將計時器設置爲每10分鐘啓動一次。 我的服務需要5分鐘才能完成當前的執行。 但在某些情況下,需要更多時間(不可預知)。 那麼如果我的服務在10分鐘內無法完成當前的執行 ,會發生什麼情況。 我當前執行的服務會發生什麼? 感謝您的幫助。Windows服務中的計時器
1
A
回答
2
您可以在Windows服務中使用定時器,因爲它也對MSDN
表示服務應用程序的設計是長時間運行。因此,它通常會輪詢或監視系統中的某些內容。監控在OnStart方法中設置。但是,OnStart實際上並沒有進行監控。一旦服務操作開始,OnStart方法必須返回到操作系統。它不能永遠循環或阻止。要設置簡單的輪詢機制,您可以使用System.Timers.Timer組件。在OnStart方法中,您將在組件上設置參數,然後將Enabled屬性設置爲true。定時器會定期在您的代碼中引發事件,屆時您的服務可以進行監控。
儘管存在上述情況,您仍然需要創建邏輯以避免死鎖或在Elapsed
事件中指定的代碼需要比間隔本身更長的時間。
Elapsed事件在ThreadPool線程上引發。如果處理Elapsed事件的持續時間比Interval長,則可能會在另一個ThreadPool線程上再次引發該事件。因此,事件處理程序應該是可重入的。
http://msdn.microsoft.com/en-us/library/system.timers.timer%28v=vs.80%29.aspx
相關問題
- 1. Windows服務和計時器
- 2. 在Windows服務中使用計時器
- 3. Windows服務線程內的計時器
- 4. 服務中的計時器
- 5. Windows服務計時器多線程
- 6. C#Windows服務計時器未觸發
- 7. 在長時間運行的Windows服務中使用計時器
- 8. Windows服務中的計時器 - 不是真的有用嗎?
- 9. Windows服務器任務計劃程序
- 10. Windows服務中的計時器未觸發ElapsedEventHandler
- 11. Windows服務中的可重入計時器
- 12. Windows服務中的計時器需要重新啓動
- 13. 服務器端計時器?
- 14. 服務中的計時器功能(類型的計時器)
- 15. WCF服務主機中的計時器
- 16. C中的可調服務計時器
- 17. Android服務中的計時器?
- 18. 服務中的Android倒數計時器
- 19. win32服務中的計時器
- 20. Android服務中的計時器
- 21. 爲什麼計時器不能在windows服務中工作?
- 22. 在Windows服務中更改計時器間隔
- 23. 在Windows服務中使用計時器是否明智?
- 24. 計時器如何在.net Windows服務中工作?
- 25. Windows服務器中的System.Windows.Forms.Timer
- 26. 安卓計時器服務
- 27. 服務計時器通知
- 28. 窗戶服務計時器
- 29. JavaEE計時器服務
- 30. EJB計時器服務: