Я пытаюсь использовать StreamReader для чтения выходных данных из процесса, но StreamReader блокирует и не возвращает какой-либо из результатов.Streamreader.Read blocks/RedirectStandardOutput used
Мой процесс выглядит следующим образом:
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.Arguments = args;
startInfo.FileName = filename;
StartInfo.WorkingDirectory = aDirectory;
StartInfo.UseShellExecute = false;
StartInfo.RedirectStandardOutput = true;
Process p = new Process();
p.StartInfo = startInfo;
p.Start();
StreamReader вызывается сразу после:
StreamReader strmRead = p.StandardOutput;
char[] output = new char[4096];
while(true){
strmRead.Read(output,0,output.Length);
string outputString = new string(output);
Debug.WriteLine(outputString);
}
Код висит на вызов метода чтения. Когда я вручную убиваю программу, вывод из процесса записывается в консоль отладки. Выход процесса не использует символы новой строки, поэтому использование Process.OutputDataReceived не работает. Как я могу получить выход процесса из потока, не блокируя его бесконечно?
Редактировать: Учитывая ответы, я уже понял, что проблема связана с тем, что процесс не отказывается от стандартного вывода или не выполняет промывку, а не что-то не так с моим кодом. Если кто-либо еще имеет какое-либо понимание, не стесняйтесь комментировать.
Я отредактировал заголовок вашего вопроса, чтобы он лучше предложил вашу проблему, возможно, вы получите более полезные ответы таким образом. –