ServiceController.Stop()无法停止服务

时间:2011-01-27 07:59:40

标签: c# windows-services

我有一个Windows服务,我试图使用ServiceController.Stop()进行编程:

ServiceController sc = new ServiceController(<ServiceName>);                    
sc.Stop();
sc.Refresh();

但是,当我在“服务”列表中看到此服务时,其状态仍为“已启动”。如果我调用方法sc.WaitForStatus()等待状态更改为“已停止”,则永远不会达到此状态。

出了什么问题?

1 个答案:

答案 0 :(得分:1)

我认为问题在于遗留代码。

我们需要一些配置,并且要求是配置文件中缺少配置,不应该启动服务。此验证在OnStart()中完成。验证失败时,ServiceController.Stop()方法本身会调用OnStart()!我认为这就是ServiceController.Stop()无法停止服务的原因,我在WaitForStatus()方法调用中从未获得“已停止”状态。

我更改了逻辑,现在我没有调用ServiceBase.Run()方法(调用OnStart()),如果缺少必要的配置。

遗留代码试图从Start方法停止服务!