Я разрабатываю приложение для Windows Forms, которое требует от меня вызова отдельной программы для выполнения задачи. Программа является консольным приложением, и мне нужно перенаправить стандартный вывод из консоли в TextBox в моей программе.
У меня нет проблем с запуском программы из моего приложения, но я не знаю, как перенаправить вывод в мое приложение. Мне нужно захватить вывод, пока программа работает с использованием событий.
Консольная программа не должна останавливаться, пока мое приложение не остановится и текст не будет постоянно меняться через случайные интервалы. То, что я пытаюсь сделать, это просто перехватить вывод из консоли, чтобы вызвать обработчик событий, который затем можно использовать для обновления TextBox.
Я использую C # для кодирования программы и использую .NET Framework для разработки. Исходное приложение не является программой .NET.
EDIT:
Вот пример кода того, что я пытаюсь сделать. В моем последнем приложении я заменю Console.WriteLine кодом для обновления TextBox. Я попытался установить точку останова в своем обработчике событий, но она даже не достигнута.
void Method()
{
var p = new Process();
var path = @"C:\ConsoleApp.exe";
p.StartInfo.FileName = path;
p.StartInfo.UseShellExecute = false;
p.OutputDataReceived += p_OutputDataReceived;
p.Start();
}
static void p_OutputDataReceived(object sender, DataReceivedEventArgs e)
{
Console.WriteLine(">>> {0}", e.Data);
}