我的dev box是一台Windows7(x64)计算机。我有一些代码(C,.NET 2.0),在某些情况下,检查服务是否在运行,然后停止它。
ServiceController matchedService = //My Service!
//If statements and such
matchedService.Stop();
matchedService.WaitForStatus(ServiceControllerStatus.Stopped);
现在,我可以验证myservice是否已经安装并运行。我可以告诉您,我在调试时以管理员身份运行Visual Studio 2008。我也可以在几次
如果
语句,我在编程的.stop()和.waitforstatus()部分结束。我知道,如果跳过.stop()调用,服务本身就会继续运行(在
服务
尽管我想到了也许我应该为这个找到一个更好的工具。我确信有一些系统内部工具可以提供更多信息)。当我跨过.waitforstatus()调用时,我基本上是在等待停止状态。…永远。好吧,我昨天(两次)让它停在那里超过15分钟,什么也没发生。我们永远不会到达下一行代码。感觉就像是鲍伊的太空怪胎(你知道我在说什么)。
我的服务有很多你不知道的东西。你不明白的事情。你做不到的事。.让我说清楚。没有服务依赖于myservice,myservice不依赖于其他服务。
补遗
在代码中,myotherservice和sonofmyservice在这一点上的行为似乎都是正确的。所有这些服务都具有相同的特性(它们是我们自己的服务,我们孵化在一个秘密实验室中,没有依赖性)。可能是myservice安装有问题还是有问题?
我知道如果此时停止调试,myService仍然被列为正在运行
服务
(即使在点击刷新之后)。如果我尝试重新启动它(或者再次运行我的应用程序并达到这一点),我会收到一条关于它无法接受控制消息的消息。之后,服务显示为已停止,我可以正常启动。
为什么不停止服务?这是赢7的怪癖吗?我不理解服务控制器,还是赢得服务?