【发布时间】:2011-06-22 10:16:23
【问题描述】:
我正在使用第 3 方控制台应用程序,它会定期将数据逐行输出到控制台。当我尝试通过我的应用程序运行它以便解析输出数据时,我注意到 OutPutstream 仅在应用程序退出后才可读。
我使用 C# 控制台应用程序测试了我的应用程序,该应用程序每 5 秒向控制台输出一些内容,并且它按预期工作。我调用的第 3 方进程是用 Java 或 C++ 编写的(不确定),但它似乎可能不符合 .NET 对控制台应用程序的期望。
还有其他方法可以读取控制台应用程序输出的数据吗?
编辑:我正在从 WPF 应用程序调用进程。所以需要异步读取。
编辑 2: 控制台应用程序从 USB 设备(加速度计 - http://www.gcdataconcepts.com/)读取数据。
下面是我使用的代码:
public void RunProcess()
{
Process process = new Process();
process.StartInfo.FileName = "consoleApp.exe";
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.CreateNoWindow = true;
process.OutputDataReceived += new DataReceivedEventHandler(OutputHandler);
process.Start();
process.BeginOutputReadLine();
}
private void OutputHandler(object sendingProcess, DataReceivedEventArgs outLine)
{
if (!string.IsNullOrEmpty(outLine.Data))
{
Dispatcher.Invoke(new Action(() =>
{
textBlock1.Text += outLine.Data + Environment.NewLine;
}), System.Windows.Threading.DispatcherPriority.Normal);
}
}
【问题讨论】:
-
我已经修复了这个问题,你可以在这个类似的问题上找到它...stackoverflow.com/a/11675360/361464
标签: c# console-application redirectstandardoutput