[英]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.