重新启动Windows服务

时间:2009-03-09 02:33:15

标签: windows service

我想安排重启我的自定义服务 自动使用带净停止,净启动的批处理文件。

当净停止运行时,它会中止正在执行的任何操作 立即?

只是想知道如果在处理过程中会发生什么?

马尔科姆

5 个答案:

答案 0 :(得分:1)

它将异步调用您的代码,由您来处理它。您可以根据需要制定干净或中止。

答案 1 :(得分:1)

这实际上取决于服务的实施方式。 “网络停止”基本上是对服务的调用,并说“你愿意停止”。大多数服务都会遵守此命令并及时停止。然而,有不良服务不遵守和拒绝停止。在这种情况下,净止损不会采取进一步行动。

答案 2 :(得分:0)

这实际上取决于服务。我怀疑大多数人会在停止前尝试进入良好状态。这不是杀人。

答案 3 :(得分:0)

服务注册以接收事件(通过RegisterServiceCtrlHandler)。当您执行网络停止时,已注​​册的回调将通过SERVICE_CONTROL_STOP操作接收回调。服务如何响应该回调取决于服务实现。服务进行常规应用程序关闭处理是有意义的。

答案 4 :(得分:0)

与其他人说的一样,当你调用net stop时,它将调用Windows服务中的OnStop。如果OnStop没有杀死应用程序中的所有线程,或者没有正确关闭所有线程,那么您的服务可能不会停止。 (我已经看到这种情况发生在我们的一个WCF服务中:我们没有关闭OnStop中的ServiceHost,因此,应用程序不会停止在我们的命令 - 我们必须手动终止该过程。)

我见过的一种常见模式是尝试在服务上调用stop,如果它在超时(10秒)内没有死亡,则强制终止该进程。作为批处理文件的替代方案,PowerShell对处理服务有一些非常好的支持。