У меня проблема с получением некоторого стандартного вывода консоли из небольшого долго работающего консольного приложения, порожденного моим приложением.
Мое приложение запускает консольное приложение, и консольное приложение остается в живых, слушая порт дляпродолжительность жизни моих приложений (или пока явно не уничтожена).
Когда консольное приложение запускается, оно выводит номер порта, который прослушивает, мне нужно асинхронно захватить этот номер порта и использовать его в другом месте приложения.Проблема в том, что мой обработчик событий для получения выходных данных никогда не вызывается.Я уверен, что должно быть что-то тривиальное, что я забыл сделать.
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.