在 .NET 中高效捕獲子進程標準輸出
從 .NET 中的子程序檢索標準輸出 (STDOUT) 可能很棘手。本文根據開發者的經驗詳細介紹了解決方案。
開發人員最初使用事件驅動的回調來捕獲作為子進程啟動的控制台應用程式的輸出。然而,這種方法導致了僵局,導致 OutputDataReceived
事件無法觸發。
解決方案涉及切換到從進程的 StandardOutput
流直接讀取:
return p.StandardOutput.ReadToEnd();
此方法有效捕捉所有流程輸出。
或者,BeginOutputReadLine()
方法提供了事件驅動的方法:
process.StartInfo.UseShellExecute = false; process.StartInfo.RedirectStandardOutput = true; process.OutputDataReceived += (sender, args) => Console.WriteLine("received output: {0}", args.Data); process.Start(); process.BeginOutputReadLine();
這些技術提供了從控制台應用程式捕獲 STDOUT 的可靠方法,增強了子進程的互動和監控。
以上是如何有效地從 .NET 子程序捕獲標準輸出?的詳細內容。更多資訊請關注PHP中文網其他相關文章!