我怎么知道我的Windows服务何时无法运行

时间:2012-07-10 12:13:19

标签: c# windows-services

我有一个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";
                }

          }

抱歉我的英文不好

2 个答案:

答案 0 :(得分:2)

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

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

那就是说,如果你能详细说明你的问题,我们可以帮助你更好。信息,例如,需要了解服务停止的代码是什么?如果它是一个Web应用程序,该服务可以在其OnStop期间进行http调用。

通常,它首选尽快使OnStop退出。如果OnStop中的代码耗时太长,Windows可能会声明服务无响应并导致不合适的关闭。

答案 1 :(得分:2)

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

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

查看ServiceBase了解详情。