此代码在大量计算机上按预期运行.但是在一台特定的机器上,呼叫WaitForExit()似乎被忽略了,实际上标志着该过程已经退出.
static void Main(string[] args)
{
Process proc = Process.Start("notepad.exe");
Console.WriteLine(proc.HasExited); //Always False
proc.WaitForExit(); //Blocks on all but one machines
Console.WriteLine(proc.HasExited); //**See comment below
Console.ReadLine();
}
Run Code Online (Sandbox Code Playgroud)
请注意,与SO上的类似问题不同,被调用的过程是notepad.exe(出于测试原因),因此故障不太可能 - 即它不会产生第二个子过程并关闭.即便如此,也无法解释为什么它适用于所有其他机器.
在问题机器上,即使记事本仍然在屏幕和任务管理器中仍然清楚地打开第二次Console.WriteLine(proc.HasExited))返回调用true.
该机器运行的是Windows 7和.NET 4.0.
我的问题是; 该特定机器上的条件可能导致这种情况?我应该检查什么?
编辑 - 到目前为止我尝试过的事情/更新/可能相关的信息:
GetProcessesByName但这只是在问题机器上返回一个空数组.因此,很难说问题就是这样WaitForExit,因为GetProcessesByName即使在调用之前调用也没有返回进程WaitForExit.