Я выполняю exe-файл, который содержит некоторый c-код из моей winform C#, но я получаю полный вывод кода c только после полного выполнения exe. Я хочу, чтобы exe передавал свой вывод на мою winform синхронно (строка за строкой в реальном времени).Синхронное чтение stdout процесса
var proc = new Process
{
StartInfo = new ProcessStartInfo
{
FileName = "background.exe",
Arguments = command,
UseShellExecute = false,
RedirectStandardOutput = true,
CreateNoWindow = true
}
};
proc.Start();
while (!proc.StandardOutput.EndOfStream)
{
ConsoleWindow.AppendText(proc.StandardOutput.ReadLine());
ConsoleWindow.AppendText(Environment.NewLine);
}
Что значит 'некоторый c-код'? Никакой текст не записывается на вывод, если только он не выполнил * процесс *. Вы должны проверить код 'background.exe'. И убедитесь, что 'background.exe' на самом деле является скомпилированным двоичным исполняемым файлом, а не только C-файлом с другим расширением –
Вы проверили этот [вопрос] (http://stackoverflow.com/questions/285760/how- to-spawn-a-process-and-capture-its-stdout-in-net) и этот [вопрос] (http://stackoverflow.com/questions/18588659/redirect-process-output-c-sharp)? –
Проверял все примеры кода, и они считывали вывод только после завершения процесса. –