C#:Process.HasExited返回false,即使进程已终止

时间:2010-05-06 08:39:48

标签: c# process

可能是这个问题的反面:Process.HasExited returns true even though process is running?

我在一个进程上调用了Kill(),它似乎已经退出了。但是当我测试HasExited时,我得到了错误:

myProcess.Kill();

while ( !myProcess.HasExited )
{
    Thread.Sleep(1000);
}

这无限期地持续下去。当然,我必须更改此代码以最终停止等待,但我很好奇为什么HasExited仍然返回false,因为这个过程似乎已经从地图上掉下来了。

1 个答案:

答案 0 :(得分:8)

您是否重定向标准输出? MSDN声明如下:

  

当标准输出重定向到异步事件处理程序时,当此属性返回true时,输出处理可能无法完成。要确保已完成异步事件处理,请在检查HasExited之前调用不带参数的WaitForExit()重载。

无论如何,建议的解决方法应该可以解决问题:

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