我想了解OnStart()
之間構造一個ServiceBase
派生類的差異。從閱讀周圍看來,第一次啓動服務(在打開機器後),構造函數被調用。此後,您可以根據需要多次停止和啓動該服務,但構造函數將不會再次被調用,每次只會調用OnStart()
方法。有人可以確認嗎?C#服務 - 的OnStart()V構造
感謝
我想了解OnStart()
之間構造一個ServiceBase
派生類的差異。從閱讀周圍看來,第一次啓動服務(在打開機器後),構造函數被調用。此後,您可以根據需要多次停止和啓動該服務,但構造函數將不會再次被調用,每次只會調用OnStart()
方法。有人可以確認嗎?C#服務 - 的OnStart()V構造
感謝
不要使用構造函數進行處理,應在OnStart
。使用OnStart
來處理您的服務的所有初始化。構造函數在應用程序的可執行文件運行時調用,而不是在服務運行時調用。該可執行文件在OnStart
之前運行。例如,如果繼續,則不會再次調用構造函數,因爲SCM
已將該對象保存在內存中。如果在構造分配OnStop
釋放資源,而不是OnStart
,所需的資源,不會再次創造了第二次服務調用。 MSDN
是的,這是正確的。每個負載調用一次構造函數,當用戶(或自動化)啓動和停止服務時,可能會發生啓動。
稍加改變是,它取決於它是否包含一個服務或多個服務。下面是來自docs
行如果可執行文件包含單個 服務,系統調用 服務的構造方法時開始是 從SCM選擇,並運行 析構函數,如果停止被調用。
如果可執行文件包含多個 ,呼叫中心開始對一個服務 導致施工人員在可執行文件被稱爲 爲大家服務, 但只有指定的服務是 啓動。當所有服務 已經停止,沒有單獨 當每個服務停止服務 析構函數一起運行。
但oxilumin的答案可能是你追求的。
是的,我可以證實。這完全合乎邏輯。 – 2011-05-13 19:53:42
謝謝你提出這個問題。 – alvonellos 2014-07-03 15:51:32