【发布时间】:2011-01-20 10:39:04
【问题描述】:
我需要每隔 15 分钟左右检查一次我的窗口服务是否正在运行。
如果没有运行,如何重新启动windows服务?
【问题讨论】:
-
使用其他 Windows 服务?
-
我不知道,因为我有一个窗口服务,如果它没有运行,我会尝试运行它,但我无法这样做
标签: c# windows-services
我需要每隔 15 分钟左右检查一次我的窗口服务是否正在运行。
如果没有运行,如何重新启动windows服务?
【问题讨论】:
标签: c# windows-services
您不需要额外的过程来恢复您的服务:
如果您想确定您的 Windows 服务始终在运行,请在“恢复”选项卡中检查其属性。将所有失败操作设置为“重新启动服务”,并将“之后重新启动服务”设置为 0 分钟。您的服务消失的那一刻,它将立即重新启动。如果可以在重启完成之前等待一段时间,请增加超时时间。
【讨论】:
内置的 Windows 服务恢复功能(请参见上面 Rob 帖子中的屏幕截图)可能会满足您的需求。如果没有,我建议尝试Service Protector,它旨在自动让您的重要 Windows 服务保持 24/7 全天候运行。
【讨论】:
如果服务没有运行,它不能检查自己。
您将需要使用第二个服务来进行检查。
【讨论】:
您可以使用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 分钟左右运行一次。
【讨论】: