(Linux Mint) - 如何在崩溃时重新启动mono .exe

时间:2016-11-23 18:22:48

标签: c# linux mono

我最近在单声道开发c#中创建了一个Tcp服务器。

我的电脑运行Linux mint 17

我使用sudo mono Desktop/server.exe运行此服务器 然而,它偶尔崩溃,我想在崩溃时重新启动它,因为我不得不回家时我的电脑重新启动它崩溃。

我意识到这不是一个稳定的解决方案,但它现在已经做到了。

我听说过UpStart,但无法理解文档。 当我通过终端启动程序时,我无法在系统监视器中弹出任何新进程,因此我也不知道程序进程的名称。

(我一直在搜索很多东西,尝试了一大堆,但我的尝试没有成功。甚至没有找到服务器进程的名称)

问题: 有没有一种简单的方法来检测我的程序是否正在运行,如果没有自动重启?

2 个答案:

答案 0 :(得分:0)

  

我最近在单声道开发c#中创建了一个Tcp服务器。

如果您拥有代码,最好的办法是修复代码,使代码不会崩溃。只有当您没有代码或人力来解决您正在使用的软件中的问题时,您唯一想要在崩溃时重新启动的东西。

答案 1 :(得分:0)

我已经解决了我的问题,但我不确定我会为一个普遍的答案做出贡献:

我以前的代码涉及一个块:

while (data != null) {
        sw.WriteLine (data);
        sw.Flush ();
        data = file.ReadLine ();
        }
sw.Close ();
file.Close ();

其中sw是streamWriter。 崩溃的原因是sw.Flush失败,我不明白。我按照knocte的建议解决了它:

try{
    while (data != null) {
        sw.WriteLine (data);
        sw.Flush ();
        data = file.ReadLine ();
        }
    sw.Close ();
    file.Close ();
    }catch{
        sw.Close ();
        file.Close ();
        continue;
    }

这不是一个很好的解决方案,但显然比重新启动应用程序更好。现在一切似乎都很好。感谢

编辑:显然knocte建议我尝试捕获我的整个Main(),但这仍然有效