Я вызываю консольное приложение, используя класс Process. Я перенаправляю вывод в файл журнала, но в окне консоли больше сообщений, когда я не перенаправляю вывод, чем в файле журнала, когда я. есть идеи почему?
ProcessStartInfo psi = new ProcessStartInfo();
string filename = @"ProgrammingMaster_LocalPowertrain.exe";
psi.FileName = filename;
string arguments = String.Format("{0} {1} false", InstanceId.ToString(), ManifestFolderPath);
psi.Arguments = arguments;
LogMessage(msgType.Warning, filename + " - " + arguments);
psi.UseShellExecute = false;
psi.CreateNoWindow = true;
psi.RedirectStandardError = true;
psi.RedirectStandardOutput = true;
FBlockProcess = new Process();
FBlockProcess.StartInfo = psi;
FBlockProcess.OutputDataReceived += new DataReceivedEventHandler(FBlockProcess_OutputDataReceived);
FBlockProcess.ErrorDataReceived += new DataReceivedEventHandler(FBlockProcess_ErrorDataReceived);
FBlockProcess.Start();
FBlockProcess.BeginOutputReadLine();
FBlockProcess.BeginErrorReadLine();
в моем обработчике OutputDataReceived я просто добавляю строку в ConcurrentQueue
Edit:
Я должен добавить, что я хочу захватить вывод в режиме реального времени или близко к нему. Процесс может занять более 30 минут, мне не нужно долго ждать, чтобы увидеть, что происходит.
Обновление:
После вывода первых четырех строк событие OutputDataReceived eventHandler никогда не вызывается, хотя я знаю, что на консоль выводятся еще 10 или 15 строк, когда я не перенаправляю. Любые идеи о том, что может вызвать это?