我有一个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时没有关闭程序?如何发现问题?
答案 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()中的代码,您将看到主线程保持活动的主要形式。关闭它,应用程序将退出。