我正在开发一个 Windows Forms 应用程序,需要调用另一个程序来执行任务。该程序是控制台应用程序,我需要将控制台的标准输出重定向到我的程序中的一个文本框。
我可以从我的应用程序中执行该程序,但不知道如何将输出重定向到我的应用程序中。我需要在程序运行时使用事件来捕获输出。
控制台程序不会停止运行,直到我的应用程序停止,并且文本在随机时间间隔内不断更改。我的目标是仅仅挂接控制台输出以触发事件处理程序,然后用它来更新文本框。
我使用 C# 编写程序,并使用 .NET 框架进行开发。原始应用程序不是 .NET 程序。
编辑: 以下是我正在尝试的示例代码。在我的最终应用程序中,我将用更新文本框的代码替换 Console.WriteLine。我尝试在事件处理程序中设置断点,但没有达到该断点。
我可以从我的应用程序中执行该程序,但不知道如何将输出重定向到我的应用程序中。我需要在程序运行时使用事件来捕获输出。
控制台程序不会停止运行,直到我的应用程序停止,并且文本在随机时间间隔内不断更改。我的目标是仅仅挂接控制台输出以触发事件处理程序,然后用它来更新文本框。
我使用 C# 编写程序,并使用 .NET 框架进行开发。原始应用程序不是 .NET 程序。
编辑: 以下是我正在尝试的示例代码。在我的最终应用程序中,我将用更新文本框的代码替换 Console.WriteLine。我尝试在事件处理程序中设置断点,但没有达到该断点。
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);
}
InputDataReceived
在哪里? - Dmitri Nesteruk