我有一个windows服务,我试图用ServiceController.Stop()来阻止它
ServiceController sc = new ServiceController(<ServiceName>);
sc.Stop();
sc.Refresh();但是,当我在“服务”列表中看到此服务时,它的状态仍然是“已启动”。如果我调用方法sc.WaitForStatus()等待状态更改为“停止”,则永远不会达到此状态。
出什么问题了?
发布于 2011-01-28 04:07:39
我认为问题在于遗留代码。
我们需要一些配置,要求是如果配置文件中缺少配置,则不应该启动服务。此验证是在OnStart()中完成的。当验证失败时,就从OnStart()方法本身调用该OnStart()!我认为这就是为什么ServiceController.Stop()无法停止服务的原因,我从未在WaitForStatus()方法调用中获得“停止”状态。
我更改了逻辑,现在不调用ServiceBase.Run()方法(如果缺少必要的配置就调用OnStart())。
遗留代码试图阻止服务从其开始方法!
https://stackoverflow.com/questions/4813948
复制相似问题