我开发框是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作为管理员,同时调试。我还可以验证几个后的如果语句,我在编程的.Stop()和.WaitForStatus()部分卷起。我不知道,如果步在.Stop()调用,该服务本身只是保持运行(在服务,虽然它发生,我或许我应该抓住这个更好的工具。我看着它“肯定有一些的Sysinternals工具,可能会给我更多的信息)。当我迈过.WaitForStatus()调用,我基本上拉闸等待停止状态。 。 。永远。嗯,我让它坐在那里15分钟以上,昨天(两次)并没有任何反应。我们永远不会进入到下一行代码。感觉酷似Bowie的空间怪异(你知道我说的是一部分)。

有是关于为MyService洛塔东西你不知道任何事情。事情你不会明白的。事情你不能。 。 。让我来说明这一点明明白白。没有服务依赖于为MyService和为MyService不依赖于其它服务。的附录 MyOtherService和SonOfMyService似乎都在代码这一点上正确运行。所有这些服务都有着相同的特性(他们是我们自己的服务,我们在一个秘密实验室中孵化,并没有依赖关系)。是否有可能有一些毛病的MyService安装什么?

我知道,如果我在此时停止调试,为MyService仍被列为运行的服务(甚至击中刷新后)。如果我试图重新启动它,然后(或再次运行我的应用程序,并得到了这一点),我得到一个关于它不能够接受控制信息的消息。此后,服务显示为停止,我可以正常启动它。

为什么不服务被停止?这是赢7的怪癖?一个失败对我而言,了解的ServiceController,或Win服务有什么看法?

有帮助吗?

解决方案

经过进一步调查,我相信这是与服务本身有问题。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top