Рассмотрим этот пример кода C # (ненужные фрагменты не учтены):
using System.Diagnostics.Process;
var process = new Process();
var startInfo = process.StartInfo;
startInfo.RedirectStandardOutput = true;
startInfo.RedirectStandardError = true;
process.EnableRaisingEvents = true;
process.OutputDataReceived += OutputHandler;
process.ErrorDataReceived += ErrorHandler;
process.Exited += ExitHandler;
process.Start();
process.BeginOutputReadLine();
process.BeginErrorReadLine();
Теперь я хочу уведомить слушателя, что процесс завершен после того, как больше нет вывода (stdout / stderr) для чтения из него . Как в моем методе ExitHandler
убедиться, что все оставшиеся stdout / stderr обработаны OutputHandler
и ErrorHandler
, прежде чем определить, что процесс действительно завершился?