2008-12-17 36 views

回答

1

使用try-catch並自己調用OnStop;不要依靠「自動停止」,即使它被「保證」,它仍然不是一個好主意。服務應儘可能健壯。

0

如果通過崩潰,你的意思是在你的服務中有一個未處理的異常,那麼答案是否定的。OnStop不會被調用。通常該服務將被標記爲停止。但是Steven是正確的,每個「根」方法都必須有一個圍繞任何可能拋出異常的代碼的try-catch塊,你的服務不應該有未處理的異常。

0

OnStop()僅在服務實際被告知停止時調用。這不包括例如系統關機,因爲有一個單獨的方法來覆蓋(稱爲OnShutdown())。

無論你在OnStop()地方應該有可能是,但到一個單一的獨立的方法,可以從兩個OnStop()OnShutdown()

至於追趕奇意外的異常被調用,我會嘗試建議包裹ServiceBase.Run()通話/捕獲在捕獲克勞斯。這幾乎可以保證你在發生異常時進行某種記錄。

相關問題