ServiceController.Stop()似乎不会停止任何操作

问题描述:

我的开发盒是Windows 7(x64)机器。我有一些代码(C#,.net 2.0),在某些情况下,检查服务是否正在运行,然后停止它。ServiceController.Stop()似乎不会停止任何操作

ServiceController matchedService = //My Service! 

//If statements and such 

matchedService.Stop(); 
matchedService.WaitForStatus(ServiceControllerStatus.Stopped); 

现在,我可以验证MyService是否已安装并正在运行。我可以告诉你,我在调试时以管理员身份运行Visual Studio 2008。我还可以验证在几个语句之后,我将编程的.Stop()和.WaitForStatus()部分结束。我知道,如果跨过.Stop()调用,服务本身只是继续运行(看它在服务,虽然它发生在我身上,或许我应该为此获取更好的工具。 sysinternals工具,可能会给我更多的信息)。当我跨过.WaitForStatus()调用时,基本上已经等待停止状态。 。 。永远。那我昨天让它坐在那里超过15分钟(两次),没有任何反应。我们从来没有把它做到下一行代码。这感觉完全像鲍伊的太空奇迹(你知道我说的那部分)。

有很多关于MyService的事情你都不了解。你不明白的事情。你不能做的事情。 。 。让我清楚地陈述这一点。没有服务依赖于MyService,MyService不依赖于其他服务。 附录 MyOtherService和SonOfMyService在代码中的这一点似乎都表现正确。所有这些服务都具有相同的特征(它们是我们在秘密实验室孵化的我们自己的服务,并且没有依赖关系)。是否有可能有MyService安装有问题吗?

我确实知道,如果此时我停止调试,MyService仍会列为运行在服务(即使刷新后)。如果我尝试重新启动它(或再次运行我的应用程序并到达这一点),我收到一条消息,指出它无法接受控制消息。之后,该服务显示为已停止,并且可以正常启动。

为什么不停止服务?这是赢7的怪癖吗?我无法理解ServiceController或一般的Win服务?

经过进一步调查,我认为这是服务本身的问题。