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

Jer*_*emy 6 c# process

可能与此问题相反:即使进程正在运行,Process.HasExited也会返回true?

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

myProcess.Kill();

while ( !myProcess.HasExited )
{
    Thread.Sleep(1000);
}
Run Code Online (Sandbox Code Playgroud)

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

Dir*_*mar 8

你重定向标准输出?MSDN声明如下:

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

无论如何,建议的解决方法应该可以做到这一点:

myProcess.Kill();
myProcess.WaitForExit();
Run Code Online (Sandbox Code Playgroud)