Trava StandardOutput.EndOfStream

Estou iniciando um processo no meu aplicativo C # que executa um aplicativo de console. Redirecionei a entrada e a saída padrão e sou capaz de ler algumas linhas via StandardOutput.ReadLine (). Estou convencido de que tenho o ProcessStartInfo configurado corretamente.

O aplicativo do console, quando iniciado, gera algumas linhas (terminando com uma linha de "marcador") e aguarda a entrada. Depois de receber a entrada, ela produz novamente algumas linhas (terminando novamente com uma linha de "marcador") e assim por diante. Minha intenção é ler linhas dele até receber a linha "marcador", momento em que sei enviar a sequência de entrada apropriada.

Meu problema é que, após várias iterações, o programa trava. Pausar o depurador tende a colocar o travamento dentro de uma chamada para StandardOutput.EndOfStream. Este é o caso no seguinte código de teste:

while (!mProcess.StandardOutput.EndOfStream) // Program hangs here.
{
    Console.WriteLine(mProcess.StandardOutput.ReadLine());
}

Quando estou testando a linha "marcador", fico com o mesmo tipo de interrupção se tentar acessar StandardOutput.EndOfStream depois de ler a linha:

string line = "";
while (!isMarker(line))
{
    line = mProcess.StandardOutput.ReadLine();
}
bool eos = mProcess.StandardOutput.EndOfStream; // Program hangs here.

O que devo estar fazendo para que essa propriedade tenha um desempenho tão horrível?

questionAnswers(4)

yourAnswerToTheQuestion