С# 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 есть пример кода - я не буду повторять его здесь.