.NET で子プロセスの標準出力を効率的に取得する
.NET で子プロセスから標準出力 (STDOUT) を取得するのは難しい場合があります。この記事では、開発者の経験に基づいたソリューションについて詳しく説明します。
開発者は当初、イベント駆動型のコールバックを使用して、子プロセスとして起動されたコンソール アプリケーションからの出力をキャプチャしました。ただし、このアプローチではデッドロックが発生し、OutputDataReceived
イベントが起動できなくなりました。
この解決策には、プロセスの StandardOutput
ストリームからの直接読み取りへの切り替えが含まれていました:
<code class="language-csharp">return p.StandardOutput.ReadToEnd();</code>
このメソッドは、すべてのプロセス出力を効果的にキャプチャします。
あるいは、BeginOutputReadLine()
メソッドはイベント駆動型のアプローチを提供します。
<code class="language-csharp">process.StartInfo.UseShellExecute = false; process.StartInfo.RedirectStandardOutput = true; process.OutputDataReceived += (sender, args) => Console.WriteLine("received output: {0}", args.Data); process.Start(); process.BeginOutputReadLine();</code>
これらの技術は、コンソール アプリケーションから STDOUT をキャプチャし、子プロセスの対話と監視を強化するための信頼できる方法を提供します。
以上が.NETの子プロセスから標準出力を効率的にキャプチャするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。