当孩子跑步时退出父进程

时间:2012-01-15 13:12:04

标签: 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时没有关闭程序?如何发现问题?

2 个答案:

答案 0 :(得分:3)

一旦开始新流程,其生命周期与您当前的应用程序无关。如果您想要一个与当前应用程序的生命周期直接相关的执行工件,请使用线程。

如果您确定要创建子进程然后终止它,则需要将其终止:

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();

但是,我不建议在大多数情况下使用上述内容,因为如果在执行关键操作(例如保存到文件)时子进程被终止,它可能会导致数据损坏。

答案 1 :(得分:0)

要退出Windows窗体应用程序,应关闭主窗体。查看Program.Main()中的代码,您将看到主线程保持活动的主要形式。关闭它,应用程序将退出。