C#:自动重新启动程序

C#:自动重新启动程序,c#,C#,我目前正在开发一个小游戏服务器,它有一个“模拟器”。有时它会崩溃,用户将不得不等到我下班回来,所以我想问是否有人知道,如果.exe崩溃,是否有办法自动重启它(有3个),如果程序说“…停止工作” 有人帮我吗?您可以编写一个简单的批处理文件,用于检查exe主函数的返回值(退出代码) 或者只编写一个简单的程序,用进程启动它。如果它没有运行,则启动->枚举并检查进程。getprocesss() 如果“服务器”本身不提供编程服务,您也可以创建服务 有许多选项…您可以编写一个简单的批处理文件,用于检查exe

我目前正在开发一个小游戏服务器,它有一个“模拟器”。有时它会崩溃,用户将不得不等到我下班回来,所以我想问是否有人知道,如果.exe崩溃,是否有办法自动重启它(有3个),如果程序说“…停止工作”


有人帮我吗?

您可以编写一个简单的批处理文件,用于检查exe主函数的返回值(退出代码)

或者只编写一个简单的程序,用
进程启动它。如果它没有运行,则启动
->枚举并检查
进程。getprocesss()

如果“服务器”本身不提供编程服务,您也可以创建服务


有许多选项…

您可以编写一个简单的批处理文件,用于检查exe主函数的返回值(退出代码)

或者只编写一个简单的程序,用
进程启动它。如果它没有运行,则启动
->枚举并检查
进程。getprocesss()

如果“服务器”本身不提供编程服务,您也可以创建服务


有很多选择…

站在正在下沉的船上,很难从正在下沉的船上营救自己。。。您最好的选择是第二个进程,某种类型的看门狗检查应用程序是否仍处于活动状态,如果没有,则自动启动它

您可以通过调用

System.Diagnostics.Process.GetProcesses

站在一艘正在下沉的船上,很难从下沉的船上营救自己。。。您最好的选择是第二个进程,某种类型的看门狗检查应用程序是否仍处于活动状态,如果没有,则自动启动它

您可以通过调用

System.Diagnostics.Process.GetProcesses

订阅
进程。退出
事件以在退出时重新启动它:

var proc = Process.GetProcessesByName("my-server").Single();
proc.EnableRaisingEvents = true;

proc.Exited += (a, e) =>
{
    proc = Process.Start(...);  // Restart the process
};

订阅
进程。退出
事件以在退出时重新启动它:

var proc = Process.GetProcessesByName("my-server").Single();
proc.EnableRaisingEvents = true;

proc.Exited += (a, e) =>
{
    proc = Process.Start(...);  // Restart the process
};

有多种方法可以做到这一点 请记住,您已事先检查了您的检查条件 比如说

If(stopped working){
 ProcessStartInfo Info = new ProcessStartInfo();
Info.Arguments = "/C ping 127.0.0.1 -n 2 && \"" + Application.ExecutablePath 
+ "\"";
  Info.WindowStyle = ProcessWindowStyle.Hidden;
Info.CreateNoWindow = true;
Info.FileName = "cmd.exe";
Process.Start(Info);
Application.Exit();
}
另一种方法是

If(stopped working){
Application.Restart();
 }
If(stopped working){
Process.Start(Application.ExecutablePath); 
}
另一种方法是

If(stopped working){
Application.Restart();
 }
If(stopped working){
Process.Start(Application.ExecutablePath); 
}

有多种方法可以做到这一点 请记住,您已事先检查了您的检查条件 比如说

If(stopped working){
 ProcessStartInfo Info = new ProcessStartInfo();
Info.Arguments = "/C ping 127.0.0.1 -n 2 && \"" + Application.ExecutablePath 
+ "\"";
  Info.WindowStyle = ProcessWindowStyle.Hidden;
Info.CreateNoWindow = true;
Info.FileName = "cmd.exe";
Process.Start(Info);
Application.Exit();
}
另一种方法是

If(stopped working){
Application.Restart();
 }
If(stopped working){
Process.Start(Application.ExecutablePath); 
}
另一种方法是

If(stopped working){
Application.Restart();
 }
If(stopped working){
Process.Start(Application.ExecutablePath); 
}

“小游戏服务器”应该是一个Windows服务,它内置了崩溃时自动重启功能。。。。除此之外,您可能应该修复崩溃;)程序会显示“…停止工作”,如果程序没有完全退出,您可能必须定期枚举窗口以查找是否存在该错误消息,然后停止并重新启动应用程序。使用类似中的
EnumWindows()
查找示例。您还可以使用
FindWindow()
按类类型搜索该错误消息。“小游戏服务器”可能是一个Windows服务,它具有内置的崩溃时自动重启功能。。。。除此之外,您可能应该修复崩溃;)程序会显示“…停止工作”,如果程序没有完全退出,您可能必须定期枚举窗口以查找是否存在该错误消息,然后停止并重新启动应用程序。使用类似中的
EnumWindows()
查找示例。您还可以使用
FindWindow()
按类类型搜索该错误消息。