C# 在子进程运行时从父进程退出
我有一个WinForms应用程序。这是Form_Load方法的代码C# 在子进程运行时从父进程退出,c#,winforms,process,C#,Winforms,Process,我有一个WinForms应用程序。这是Form_Load方法的代码 Process proc = new Process(); proc.StartInfo.FileName = @"C:\program files\MyProgram\start.exe"; proc.StartInfo.Arguments = Application.ExecutablePath; proc.Start(); Application.Exit(); 为什么我调用Application.Exit时我的父进程
Process proc = new Process();
proc.StartInfo.FileName = @"C:\program files\MyProgram\start.exe";
proc.StartInfo.Arguments = Application.ExecutablePath;
proc.Start();
Application.Exit();
为什么我调用Application.Exit时我的父进程没有关闭程序?如何检测问题?要退出Windows窗体应用程序,应关闭主窗体。查看Program.Main()中的代码,您将看到使主线程保持活动状态的是主窗体。关闭它,应用程序将退出。一旦启动一个新进程,其生命周期与当前应用程序的生命周期无关。如果您想要一个直接绑定到当前应用程序生命周期的执行工件,请使用线程 如果确定要创建子进程并终止它,则需要终止它:
Process proc = new Process();
proc.StartInfo.FileName = @"C:\program files\MyProgram\start.exe";
proc.StartInfo.Arguments = Application.ExecutablePath;
proc.Start();
// When terminating:
proc.Kill();
proc.WaitForExit();
Application.Exit();
但是,我不建议在大多数情况下使用上述方法,因为如果在执行关键操作(如保存到文件)时终止子进程,则会导致数据损坏。是否确实调用了Form\u Load?是的,调用了Form\u Load。start.exe和父进程是同一个程序,但我检查了执行路径。因为加载事件运行时应用程序尚未启动。如果创建一个表单并立即想要终止该应用程序,则没有什么意义。只是不要创建表单。在程序中编辑Main()方法。csI在给出建议之前,我正试图准确地理解您想要实现的目标。您有一个windows窗体应用程序,它在主窗体的加载事件中启动另一个进程?这是父WinForms应用程序的唯一用途吗?