我正在尝试使用C#中的Window Service,它应该始终运行。如果发生崩溃或关机,则应自动重启。我考虑使用服务控制器类,但问题是如何处理如果服务控制器和&服务同时下降。 Windows中是否有看门狗功能,我可以注册它并负责启动服务?
答案 0 :(得分:7)
答案 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.
}
这可确保您的服务始终在运行。代码不会崩溃,当机器重新启动等时,服务会自动启动。