我最近在单声道开发c#中创建了一个Tcp服务器。
我的电脑运行Linux mint 17
我使用sudo mono Desktop/server.exe
运行此服务器
然而,它偶尔崩溃,我想在崩溃时重新启动它,因为我不得不回家时我的电脑重新启动它崩溃。
我意识到这不是一个稳定的解决方案,但它现在已经做到了。
我听说过UpStart,但无法理解文档。 当我通过终端启动程序时,我无法在系统监视器中弹出任何新进程,因此我也不知道程序进程的名称。
(我一直在搜索很多东西,尝试了一大堆,但我的尝试没有成功。甚至没有找到服务器进程的名称)
问题: 有没有一种简单的方法来检测我的程序是否正在运行,如果没有自动重启?
答案 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(),但这仍然有效