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?