自动重启Windows服务

时间:2014-03-23 05:59:11

标签: c#

我正在尝试使用C#中的Window Service,它应该始终运行。如果发生崩溃或关机,则应自动重启。我考虑使用服务控制器类,但问题是如何处理如果服务控制器和&服务同时下降。 Windows中是否有看门狗功能,我可以注册它并负责启动服务?

3 个答案:

答案 0 :(得分:7)

您可以考虑使用服务的恢复选项。它可以在运行services.msc时通过服务的属性进行设置。

请查看herehere了解详情。

答案 1 :(得分:1)

除了上面推荐的模式外,可能是个好主意 通过订阅appdomain.unhandledexception事件来捕获未处理的异常。 并卸载应用程序域,以便Windows Service Manager将 启动恢复过程。

moment

答案 2 :(得分:0)

此处推荐的一种模式是将服务启动选项设置为' Auto'并且,确保您的服务的核心功能包含在try / catch块中。

try 
{
 // core code here.
} 
catch (Exception ex)
{
 // log it for debugging and swallow so that service doesn't crash.
}

这可确保您的服务始终在运行。代码不会崩溃,当机器重新启动等时,服务会自动启动。