アプリケーションによって生成された、実行時間の長い小さなコンソール アプリから、コンソールの標準出力を取得する際に問題があります。
私のアプリはコンソール アプリを起動し、コンソール アプリは、アプリケーションの有効期間中 (または明示的に強制終了されるまで)、ポートをリッスンし続けます。
コンソール アプリが起動すると、リッスンしているポート番号が出力されます。そのポート番号を非同期的に取得し、アプリの他の場所で使用する必要があります。問題は、出力データを取得するためのイベント ハンドラーが呼び出されないことです。些細なことで忘れていることがきっとあるはずです。
ProcessStartInfo si = new ProcessStartInfo();
si.FileName = theFileName;
si.Arguments = theargs;
si.UseShellExecute = false;
si.RedirectStandardOutput = true;
si.CreateNoWindow = true;
_process = Process.Start(si);
_process.OutputDataReceived += (sender, args) =>
{
//Parse the args.Data string for the port number.
};
_process.BeginOutputReadLine(); // My handler never gets called.
// I don't want to call _process.WaitForExit() here as this is a long running process.