トラブルシューティングProcessStartInfo
豊富な出力でハングアップ
プロセスがWaitForExit
を使用して大量の出力を生成したときに無期限にぶら下がっています。これは、標準の出力とエラーストリームをリダイレクトするためのProcessStartInfo
の内部バッファーにサイズの制限があるために発生します。 出力を読み取る前にプロセスの出口を待つと、デッドロックにつながる可能性があります。このプロセスは、完全なバッファーに書き込みをブロックし、終了しないようにします。 同様に、プロセスが閉じられない場合、またはProcessStartInfo
。
ReadToEnd
StandardError
解決策:非同期読み取りこれを解決するための鍵は非同期読みです。 次のコードは、この改善されたアプローチを示しており、
との両方を効率的に処理します。 この改訂されたコードでは、非同期イベントハンドラー(
および)を使用して、出力とエラーストリームを同時に処理し、ブロッキングを防ぎます。 StandardOutput
信号は、各ストリームがいつ終了したかを示すために使用されます。無期限のハングを防ぐために、タイムアウトがStandardError
および
以上がプロセスが大きな出力を生成するときに、「waitforexit`がハングアップするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。