Я создаю приложение диспетчера серверов Winform (для использования с steamcmd) в C #, и я хочу перенаправить вывод steamcmd в richtextbox или текстовое поле, чтобы не создавалось никаких дополнительных окон, и я все еще могу видеть, что происходит внутри моего приложение.
Проблема в том, что код, который я использую, отлично работает для нативных команд cmd, таких как ping -t www.google.com, например. Он выводит строки одну за другой в режиме реального времени, но при использовании steamcmd выводит только до определенной точки (и даже тогда не показывает все). Однако, если я запускаю те же самые команды в cmd, он показывает все, что происходит в steamcmd.
Если я закрываю консольное приложение (где я тестирую), оно показывает все до закрытия, но не при нормальном запуске.
Вот примеры
(В этом случае я заставляю обновление на моем сервере)
Это то, что он выводит во время работы (в данном конкретном случае он показывает весь вывод после завершения, но не в реальном времени): http://prntscr.com/ndyr8a
Это то, что он показывает, когда я принудительно закрываю его (что он и предполагает выводить в реальном времени, однако, он просто добавляет все, что отсутствует, и, очевидно, не в правильном порядке): http://prntscr.com/ndyrnv
И это то, что предполагалось показывать в реальном времени: http://prntscr.com/ndysml
Как я могу изменить свой код, чтобы он отображался правильно в реальном времени?
Заранее спасибо
var process = new Process();
var startinfo = new ProcessStartInfo("cmd.exe", @"/C " + Path + steamcmd_arguments);
startinfo.RedirectStandardOutput = true;
startinfo.UseShellExecute = false;
process.StartInfo = startinfo;
process.OutputDataReceived += (s, e) => Console.WriteLine(e.Data);
process.Start();
process.BeginOutputReadLine();
process.WaitForExit();