我想在我的服務中使用計時器。但我聽說定時器導致死鎖問題。 假設如果我將計時器設置爲每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. 服務中的計時器
- 4. C#Windows服務計時器未觸發
- 5. Windows服務計時器多線程
- 6. Windows服務中的計時器 - 不是真的有用嗎?
- 7. Windows服務中的計時器需要重新啓動
- 8. Windows服務中的計時器未觸發ElapsedEventHandler
- 9. 服務器端計時器?
- 10. Android服務中的計時器?
- 11. C中的可調服務計時器
- 12. WCF服務主機中的計時器
- 13. Android服務中的計時器
- 14. win32服務中的計時器
- 15. 在Windows服務中更改計時器間隔
- 16. 計時器如何在.net Windows服務中工作?
- 17. EJB計時器服務:
- 18. 服務計時器通知
- 19. 窗戶服務計時器
- 20. 安卓計時器服務
- 21. JavaEE計時器服務
- 22. jquery計時器到服務器時間
- 23. 從Windows 2000服務器計算機
- 24. Windows服務器
- 25. Windows服務器
- 26. 服務器端的計時器概念
- 27. Visual Studio Express 2012 - Windows服務VB.net - 訪問計時器上的URL
- 28. 如何從Windows服務啓動計時器的方法?
- 29. Windows服務上的多個計時器未正確啓動
- 30. 什麼是最佳的計時器間隔? .NET Windows服務