StandardOutput.EndOfStream Зависает
Я запускаю процесс в моем приложении C #, который запускает консольное приложение. Я перенаправил стандартный ввод и вывод и смог прочитать несколько строк через StandardOutput.ReadLine (). Я убежден, что ProcessStartInfo настроен правильно.
Консольное приложение при запуске выводит несколько строк (заканчивающихся строкой «маркер») и затем ожидает ввода. После получения ввода он снова выводит несколько строк (снова заканчивая линией «маркер») и так далее. Мое намерение состоит в том, чтобы читать строки из него, пока я не получу строку «маркер», и в этот момент я знаю, что отправить соответствующую входную строку.
Моя проблема в том, что после нескольких итераций программа зависает. Приостановка отладчика приводит к зависанию в вызове StandardOutput.EndOfStream. Это имеет место в следующем тестовом коде:
while (!mProcess.StandardOutput.EndOfStream) // Program hangs here.
{
Console.WriteLine(mProcess.StandardOutput.ReadLine());
}
Когда я тестирую строку «маркер», я получаю такой же вид зависания, если пытаюсь получить доступ к StandardOutput.EndOfStream после чтения строки:
string line = "";
while (!isMarker(line))
{
line = mProcess.StandardOutput.ReadLine();
}
bool eos = mProcess.StandardOutput.EndOfStream; // Program hangs here.
Что я могу сделать, что заставляет это свойство работать так ужасно?