0

我的开发盒是 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 分钟,但没有任何反应。我们永远不会进入下一行代码。感觉就像鲍伊的太空怪人(你知道我在说的部分)。

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

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

为什么服务没有停止?这是win 7的怪癖吗?我未能理解 ServiceController 或 Win Services?

4

1 回答 1

0

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

于 2010-05-13T12:39:43.943 回答