С# process.start, как узнать, завершился ли процесс?
В С# я могу запустить процесс с помощью
Process.Start(program.exe);
Как узнать, продолжает ли программа работать или закрывается?
Ответы
Ответ 1
MSDN System.Diagnostics.Process
Если вы хотите знать прямо сейчас, вы можете проверить свойство HasExited
.
var isRunning = !process.HasExited;
Если это быстрый процесс, просто подождите.
process.WaitForExit();
Если вы запустите один в фоновом режиме, подпишитесь на событие "Выход" после установки EnableRaisingEvents в значение true.
process.EnableRaisingEvents = true;
process.Exited += (sender, e) => { /* do whatever */ };
Ответ 2
Process p = new Process();
p.Exited += new EventHandler(p_Exited);
p.StartInfo.FileName = @"path to file";
p.EnableRaisingEvents = true;
p.Start();
void p_Exited(object sender, EventArgs e)
{
MessageBox.Show("Process exited");
}
Ответ 3
Обязательно сохраните объект Process
, если вы используете статический вызов Process.Start()
(или создаете экземпляр с new
), а затем либо проверяете свойство HasExited
, либо подписываетесь на событие Exited
, в зависимости от ваших потребностей.
Ответ 4
Назначьте обработчик события Exited.
В этой ссылке MSDN есть пример кода - я не буду повторять его здесь.
Ответ 5
Взгляните на документацию MSDN для класса Process.
В частности, есть событие (Exited), которое вы можете прослушать.