我正在使用第三方控制檯應用程序,它將數據定期逐行輸出到控制檯。當我試圖通過我的應用程序運行它以便我可以解析輸出數據時,我注意到OutPutstream只在應用程序退出後纔可讀。控制檯應用程序不會定期刷新輸出
我用一個C#控制檯應用程序測試了我的應用程序,該應用程序每5秒向控制檯輸出一些內容,並且按預期工作。我所調用的第三方進程是用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);
}
}
我已經做了修復這一點,你可以找到它的這種類似的問題... http://stackoverflow.com/a/11675360/361464 – 2012-07-26 16:28:07