【问题标题】:Check if a windows service is running? [duplicate]检查Windows服务是否正在运行? [复制]
【发布时间】:2011-01-20 10:39:04
【问题描述】:

我需要每隔 15 分钟左右检查一次我的窗口服务是否正在运行。

如果没有运行,如何重新启动windows服务?

【问题讨论】:

  • 使用其他 Windows 服务?
  • 我不知道,因为我有一个窗口服务,如果它没有运行,我会尝试运行它,但我无法这样做

标签: c# windows-services


【解决方案1】:

您不需要额外的过程来恢复您的服务:

如果您想确定您的 Windows 服务始终在运行,请在“恢复”选项卡中检查其属性。将所有失败操作设置为“重新启动服务”,并将“之后重新启动服务”设置为 0 分钟。您的服务消失的那一刻,它将立即重新启动。如果可以在重启完成之前等待一段时间,请增加超时时间。

【讨论】:

    【解决方案2】:

    内置的 Windows 服务恢复功能(请参见上面 Rob 帖子中的屏幕截图)可能会满足您的需求。如果没有,我建议尝试Service Protector,它旨在自动让您的重要 Windows 服务保持 24/7 全天候运行。

    【讨论】:

      【解决方案3】:

      如果服务没有运行,它不能检查自己。

      您将需要使用第二个服务来进行检查。

      【讨论】:

      • 对,这就是我现在正在寻找的答案解释它的网站将不胜感激。
      • @user280154 - 请将线程问题作为一个新问题提出。并且不要忘记接受答案(点击你喜欢的答案旁边的复选标记)。
      【解决方案4】:

      您可以使用ServiceController 来检查服务是否正在运行:

      ServiceController sc = new ServiceController("servicename");
      
      if  ((sc.Status.Equals(ServiceControllerStatus.Stopped)) ||
           (sc.Status.Equals(ServiceControllerStatus.StopPending)))
      {
         // Start the service if the current status is stopped.
         sc.Start();
      }  
      

      当然,您需要从另一个服务调用它,或者将其创建为一个小程序,然后您可以安排它每 15 分钟左右运行一次。

      【讨论】:

      • 感谢您的回答,但我已经这样做了,但是当它停止时,sc.start() 会出现错误,例如无法在机器名称“。”上启动服务。
      • @user:哦,但那是另一个问题。事件日志应显示有关服务无法启动原因的更多详细信息。
      • 查看windows服务是否没有运行,那么这段代码将无法正常工作,那么如何检查该服务是否在这个windows服务之外运行。
      • 这是真的,我有一个事件日志要查看,但是当我将它部署到用户 PC 上时,我无法获得任何答案,因此我为此制作了一个自定义日志以将其记录在日志中。 txt.
      • @user: "如何在这个 Windows 服务之外检查服务是否正在运行。"就像已经提到的那样:只需创建另一个进行检查的服务,或者将其创建为控制台应用程序,然后可以对其进行调度。
      猜你喜欢
      • 2013-04-04
      • 2013-04-07
      • 1970-01-01
      • 2021-08-15
      • 2015-06-26
      • 2011-05-25
      • 2016-07-17
      • 1970-01-01
      • 2018-08-13
      相关资源
      最近更新 更多