我需要每15分钟检查一下我的窗口服务是否正在运行。
如果它没有运行,那我该如何重新启动Windows服务呢?
答案 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服务全天候运行。