我想安排重启我的自定义服务 自动使用带净停止,净启动的批处理文件。
当净停止运行时,它会中止正在执行的任何操作 立即?
只是想知道如果在处理过程中会发生什么?
马尔科姆
答案 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对处理服务有一些非常好的支持。