Подскажите, пожалуйста, как можно запустить процесс не блокируя основной поток, но и получить уведомление о завершении запущенного процесса?
Ответ
Необходимости в отдельном потоке нет.
Примерно так:
Process process = new Process();
process.StartInfo.FileName = "myprocess.exe";
//подписываемся на событие завершения процесса и включаем уведомления
process.Exited += process_Exited;
process.EnableRaisingEvents = true;
//асинхронная операция, не блокирует поток, из которого была вызвана
process.Start();
Где process_Exited — это ваш обработчик завершения процесса.
Если по каким-то причинам завершения процесса нужно дождаться синхронно, то после Start() нужно вызвать метод WaitForExit()
Комментариев нет:
Отправить комментарий