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.

Что я могу сделать, что заставляет это свойство работать так ужасно?

Ответы на вопрос(4)

Ваш ответ на вопрос