[英]ServiceController.Stop() fails to stop service
我有一個Windows服務,正在嘗試使用ServiceController.Stop()
停止進行編程:
ServiceController sc = new ServiceController(<ServiceName>);
sc.Stop();
sc.Refresh();
但是,當我在“服務”列表中看到該服務時,其狀態仍保持為“已啟動”。 如果我調用方法sc.WaitForStatus()
等待狀態更改為“已停止”,則永遠不會達到此狀態。
怎么了
我認為問題在於遺留代碼。
我們需要一些配置,要求是如果配置文件中缺少配置,則不應啟動服務。 該驗證是在OnStart()
。 每當驗證失敗時,就會從OnStart()
方法本身調用ServiceController.Stop()
! 我認為這就是為什么ServiceController.Stop()
無法停止服務,並且在WaitForStatus()
方法調用中我從未獲得狀態“ Stopped”的原因。
我更改了邏輯,現在如果缺少必要的配置, OnStart()
調用ServiceBase.Run()
方法(該方法調用OnStart()
)。
舊代碼試圖從其Start方法停止服務!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.