.NET でサブプロセスを開始し、標準出力をキャプチャします
.NET は、サブプロセスを作成し、その標準出力をリダイレクトして出力をキャプチャする方法を提供します。 Process
クラスは、プロセスを生成および操作するためのメソッドを提供します。
元のコードとその制限事項
提供されたコードはこの問題を解決しようとしますが、いくつかの問題が発生します。 WaitForExit()
メソッドがスレッドをブロックするため、OutputDataReceived
イベント ハンドラーは呼び出されません。
改善方法
改善されたコードは実用的なソリューションを提供します:
<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>
このコードは、BeginOutputReadLine()
メソッドを使用して、子プロセスからの出力データのリスニングを開始します。 OutputDataReceived
イベント ハンドラーが正しく呼び出され、キャプチャされた出力にイベント ハンドラー内でアクセスできるようになりました。
以上が.NET で子プロセスから STDOUT をキャプチャするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。