【问题标题】:Redirecting C++ console output to C#将 C++ 控制台输出重定向到 C#
【发布时间】:2012-02-04 07:57:48
【问题描述】:

我正在尝试将 C++ 控制台的输出获取到 C# Windows 窗体应用程序,我遇到的问题是 C++ exe 的输出仅在 C++ exe 终止后才会显示在 C# 控制台中。无论如何在运行 C++ exe 时将 exe 输出实时获取到 C# 控制台(如无需终止 exe)? 这是我的尝试,

Process p = new Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.FileName = "C:\\path\\ABC.exe";
p.Start();
string output = p.StandardOutput.ReadToEnd();
Console.WriteLine(output);

谢谢,

【问题讨论】:

    标签: c# .net console process.start console-output


    【解决方案1】:

    使用OutputDataReceived事件:

    Process p = new Process();
    p.StartInfo.UseShellExecute = false;
    p.StartInfo.RedirectStandardOutput = true;
    p.StartInfo.FileName = "C:\\path\\ABC.exe";
    p.OutputDataReceived += (s, e) => Console.WriteLine(e.Data);
    p.Start();
    p.BeginOutputReadLine();
    

    【讨论】:

    • 啊,我的答案完全一样,但我太慢了。
    • 感谢 Max,它与 OutputDataReceived 一起工作得很好。然而,将输出输出到 c# 控制台时性能相当慢,但我想这没关系。
    【解决方案2】:

    【讨论】:

      猜你喜欢
      • 2011-03-08
      • 1970-01-01
      • 2015-09-11
      • 2011-05-28
      • 2013-11-14
      • 1970-01-01
      • 2018-04-23
      • 2021-12-12
      相关资源
      最近更新 更多