1

我有一个 Windows 服务,我想知道它什么时候不工作,不是每隔 xx 分钟左右,而是什么时候停止

我有这个方法

 public string ServiceStatus()
          {
                switch (_service.Status)
                {
                     case ServiceControllerStatus.Running:
                          return "Running";
                     case ServiceControllerStatus.Stopped:
                          return "Stopped";
                     case ServiceControllerStatus.Paused:
                          return "Paused";
                     case ServiceControllerStatus.StopPending:
                          return "Stopping";
                     case ServiceControllerStatus.StartPending:
                          return "Starting";
                     default:
                          return "Status Changing";
                }

          }

对不起,我的英语不好

4

2 回答 2

2

当服务停止时,会调用服务对应的 OnStop 方法。在此函数中,您可以写入一些事件日志,或将消息发送到消息队列。

需要知道服务是否正在运行的代码,该代码必须轮询此共享源以了解服务何时停止。

也就是说,如果您能详细说明您的问题,我们可以为您提供更好的帮助。例如,关于服务停止需要通知的代码是什么?如果它是一个 Web 应用程序,则该服务可以在其 OnStop 期间进行 http 调用。

一般来说,最好尽快让 OnStop 退出。如果 OnStop 中的代码花费的时间过长,Windows 可能会声明服务无响应并导致错误关闭。

于 2012-07-10T12:23:50.220 回答
2

捕获停止等事件。例如,要知道您何时被“停止”:

protected override void OnStop()
{
  // Let yourself know the service has been stopped
}

查看ServiceBase了解更多信息。

于 2012-07-10T12:25:01.863 回答