(新しいプロセスで)「コンソール」アプリケーションを実行し、出力を解析するGUIアプリケーションがあります。出力をリダイレクトするには、pConsole.StartInfo.RedirectStandardOutput を true に設定します。イベント pConsole.Exited にも登録しています。
問題は、Exited イベント ハンドラで Thread.Sleep() を使用して最後のデータを取得する必要があることです。
私の Exited イベント ハンドラーは次のようになります。
Thread.Sleep(100); // Wait for additional data (if any).
pConsole.OutputDataReceived -= new System.Diagnostics.DataReceivedEventHandler(this.localTerminal_DataAvailableEvent);
int exit = pConsole.ExitCode;
pConsole.Dispose();
pConsole = null;
Exited イベントは、最後の pConsole_DataAvailableEvent の前に実行されるようです。誰がどのように/なぜこれが起こっているのか知っていますか?
また、ミューテックス/ロックを使用して、次のコンソール アプリケーションの実行を開始する前に、Exited イベントが終了していることを確認します。