Tag:

StandardOutput.EndOfStream挂起

我正在我的C#应用​​程序中启动一个运行控制台应用程序的进程。 我重定向了标准输入和输出,并且能够通过StandardOutput.ReadLine()读取几行。 我确信我已正确配置ProcessStartInfo。 控制台应用程序在启动时输出几行(以“标记”行结束),然后等待输入。 收到输入后,它再次输出几行(再次以“标记”行结束),依此类推。 我的目的是从它读取行直到我收到“marker”行,此时我知道发送相应的输入字符串。 我的问题是,经过几次迭代,程序挂起。 暂停调试器往往会将挂起置于对StandardOutput.EndOfStream的调用中。 以下测试代码就是这种情况: while (!mProcess.StandardOutput.EndOfStream) // Program hangs here. { Console.WriteLine(mProcess.StandardOutput.ReadLine()); } 当我测试“marker”行时,如果我在读取行后尝试访问StandardOutput.EndOfStream,我会得到同样的挂起: string line = “”; while (!isMarker(line)) { line = mProcess.StandardOutput.ReadLine(); } bool eos = mProcess.StandardOutput.EndOfStream; // Program hangs here. 我可能会做什么导致这个属性表现如此可怕?