可能是这个问题的反面:Process.HasExited returns true even though process is running?
我在一个进程上调用了Kill(),它似乎已经退出了。但是当我测试HasExited时,我得到了错误:
myProcess.Kill();
while ( !myProcess.HasExited )
{
Thread.Sleep(1000);
}
这无限期地持续下去。当然,我必须更改此代码以最终停止等待,但我很好奇为什么HasExited仍然返回false,因为这个过程似乎已经从地图上掉下来了。
答案 0 :(得分:8)
您是否重定向标准输出? MSDN声明如下:
当标准输出重定向到异步事件处理程序时,当此属性返回true时,输出处理可能无法完成。要确保已完成异步事件处理,请在检查HasExited之前调用不带参数的WaitForExit()重载。
无论如何,建议的解决方法应该可以解决问题:
myProcess.Kill();
myProcess.WaitForExit();