我的开发箱是Windows 7(x64)机器。我有一些代码(C#,。net 2.0),在某些情况下,检查服务是否正在运行然后停止它。
ServiceController matchedService = //My Service!
//If statements and such
matchedService.Stop();
matchedService.WaitForStatus(ServiceControllerStatus.Stopped);
现在,我可以验证MyService实际上已安装并正在运行。我可以告诉你我在调试时以管理员身份运行Visual Studio 2008。我还可以验证在几个 If 语句之后,我结束了编程的.Stop()和.WaitForStatus()部分。我知道如果跨过.Stop()调用,服务本身就会继续运行(在服务中查看它,虽然它发生在我身上或许我应该为此获取更好的工具。我我确定有一些sysinternals工具可能会给我更多信息。当我跨过.WaitForStatus()调用时,我基本上会等待停止状态。 。 。永远。好吧,我让它在昨天(两次)坐在那里超过15分钟,没有任何反应。我们从未进入下一行代码。感觉就像Bowie的Space Oddity(你知道我正在谈论的部分)。
有很多关于MyService的事情,你对此一无所知。你不会理解的事情。你不能做的事情。 。 。让我说清楚。没有服务依赖于MyService,MyService依赖于其他服务。 附录 MyOtherService和SonOfMyService似乎在代码中的这一点上都表现正常。所有这些服务都具有相同的特征(它们是我们自己在秘密实验室孵化的服务,没有依赖关系)。是否有可能MyService安装有问题?
我知道如果此时我停止调试,MyService仍会列在服务中运行(即使在点击刷新后)。如果我尝试重新启动它(或再次运行我的应用程序并达到这一点),我收到一条消息,说明它无法接受控制消息。之后,服务显示为已停止,我可以正常启动它。
为什么服务没有停止?这是7胜利的怪癖吗?我是否未能理解ServiceController或Win服务?
答案 0 :(得分:0)
经过进一步调查,我认为这是服务本身的一个问题。