如何设置我的服务器exe继续运行

时间:2012-02-03 06:49:48

标签: c# windows

我有一个现在部署的服务器进程,我想让我的服务器保持运行。 如果该进程通过某种方式崩溃,无论是某种异常还是任何其他技术流程,那么我需要重新启动它。

为此,我创建了另一个进程,在进程列表中继续检查(例如,每2分钟)此特定进程名称,如果没有找到,它将启动该进程。

我已经实施了这个解决方案,但我知道这不是一个好主意,我相信必须有一些更好的想法来完成这项工作。你能帮助我最好的方法,还是建议一些更好的方法?

出于某些限制,我无法将我的服务器进程部署为Windows服务,它是一个Windows窗体应用程序。

感谢。

2 个答案:

答案 0 :(得分:4)

您没有发布任何代码,但您提到“每隔两分钟检查进程列表”。我认为更好的解决方案是让您的监督程序流程成为父流程。它会调用CreateProcess将EXE作为子进程启动。然后在子进程句柄上执行WaitForSingleObject。一旦WaitForSingleObject返回(表示子进程已退出),它就会重新启动它。

CreateProcess和WFSO的.Net等价物是Process.StartProcess.WaitForExit

答案 1 :(得分:2)

正如你所说,解决方案远非最佳。 Windows服务已自动重启。

在您的情况下,我会从Windows任务调度程序启动您的看门狗进程,以避免看门狗死亡时出现问题。