C#进程重启循环
我正在尝试制作一个控制台应用程序,它将监视某个进程,并在它退出时重新启动它。 因此,控制台应用程序始终处于打开状态,它唯一的任务是重新启动其他进程 我把我的代码贴在下面。。它基本上可以工作,但只需重新启动一个进程 我将感谢任何帮助 提前谢谢C#进程重启循环,c#,process,restart,C#,Process,Restart,我正在尝试制作一个控制台应用程序,它将监视某个进程,并在它退出时重新启动它。 因此,控制台应用程序始终处于打开状态,它唯一的任务是重新启动其他进程 我把我的代码贴在下面。。它基本上可以工作,但只需重新启动一个进程 我将感谢任何帮助 提前谢谢 { System.Diagnostics.Process[] p = System.Diagnostics.Process.GetProcessesByName(SOME_PROCESS); p[0].Exited +
{
System.Diagnostics.Process[] p = System.Diagnostics.Process.GetProcessesByName(SOME_PROCESS);
p[0].Exited += new EventHandler(Startup_Exited);
while (!p[0].HasExited)
{
p[0].WaitForExit();
}
//Application.Run();
}
private static void Startup_Exited(object sender, EventArgs e)
{
System.Diagnostics.Process.Start(AGAIN_THAT_SAME_PROCESS);
}
我敢打赌,在再次启动进程时,您需要更新p[0]指向的进程,并重新连接事件处理程序。一旦它消失,您的事件就会触发,并且您再也没有向进程注册过事件处理程序。您需要一个循环,并且在循环的顶部,您需要在重新启动程序后将
p
重新附加到新进程。比如:
Process p = /* get the current instance of the program */;
while (true)
{
p.WaitForExit();
p = Process.Start(/* the program */);
}
注意,由于Process .start返回新实例的进程对象,实际上不需要重新执行搜索:您可以直接等待新进程对象。
如果可能的话,您应该考虑将另一个进程作为服务来运行。Windows中的服务控制管理器已具有重新启动异常终止的进程的功能。