Я использую .NET и C # для запуска процесса и асинхронного чтения его результатов.Моя проблема в том, что кажется, что задержка перед тем, как вывод прочитан моей программой.Если я запускаю исполняемый файл в командной строке, сразу же начинается его запуск.Но когда я запускаю его, используя мой код, обработчик события ReadOutput не вызывается, пока не завершится процесс.Я хочу использовать это для предоставления в реальном времени представления о выходе процесса, поэтому я не хочу ждать (несколько минут), пока процесс не завершится.
Вот некоторый соответствующий код:
MyProcess = new Process();
MyProcess.StartInfo.FileName = command;
MyProcess.StartInfo.Arguments = args;
MyProcess.StartInfo.UseShellExecute = false;
MyProcess.StartInfo.RedirectStandardOutput = true;
MyProcess.StartInfo.RedirectStandardError = true;
MyProcess.StartInfo.RedirectStandardInput = true;
MyProcess.OutputDataReceived += new DataReceivedEventHandler(ReadOutput);
MyProcess.ErrorDataReceived += new DataReceivedEventHandler(ReadOutput);
if (!MyProcess.Start())
{
throw new Exception("Process could not be started");
}
try
{
MyProcess.BeginOutputReadLine();
MyProcess.BeginErrorReadLine();
}
catch (Exception ex)
{
throw new Exception("Unable to begin asynchronous reading from process";
}
А вот мой обработчик событий:
private void ReadOutput(object sendingProcess, DataReceivedEventArgs outLine)
{
OutputBuilder.AppendLine(outLine.Data);
Console.WriteLine(outLine.Data);
Console.Out.Flush();
}