Выход из родительского процесса при запуске child - PullRequest
4 голосов
/ 15 января 2012

У меня есть приложение 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 ]

3 голосов
/ 15 января 2012

После запуска нового процесса его время жизни не зависит от текущего приложения.Если вы хотите, чтобы артефакт выполнения был напрямую связан со временем жизни текущего приложения, используйте потоки.

Если вы уверены, что хотите создать дочерний процесс, а затем прекратить его, вам нужно его убить:

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

Однако я не рекомендовал бы выше для большинства сценариев., поскольку это может привести к повреждению данных, если дочерний процесс завершится во время выполнения критической операции (например, сохранения в файл).

0 голосов
/ 15 января 2012

Чтобы выйти из приложения Windows Forms, вы должны закрыть основную форму.Посмотрите на код в Program.Main (), и вы увидите, что основной поток поддерживает живую нить.Закройте его, и приложение закроется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...