На C#: Процесс.Hasexited возвращает false, даже если процесс завершен

возможно, обратный этому вопросу:

1 ответов


вы перенаправляете стандартный вывод? MSDN указано следующее:

если стандартный вывод был перенаправлен на асинхронные обработчики событий, возможно, что обработка вывода не будет завершена, когда это свойство возвращает true. Чтобы убедиться, что асинхронная обработка событий завершена, вызовите перегрузку WaitForExit (), которая не принимает параметр перед проверкой HasExited.

в любом случае, предложенное решение должно возможно, сделать трюк:

myProcess.Kill();
myProcess.WaitForExit();