检查Windows服务是否正在运行?

时间:2010-02-24 08:36:39

标签: c# windows-services

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

如果它没有运行,那我该如何重新启动Windows服务呢?

4 个答案:

答案 0 :(得分:15)

您可以使用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分钟左右运行一次。

答案 1 :(得分:11)

您无需额外的流程来恢复服务:

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

Service Recovery settings http://www.robvangroenewoud.com/images/service_recovery.png

答案 2 :(得分:2)

如果服务未运行,则无法自行检查。

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

答案 3 :(得分:1)

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