Как асинхронно читать для завершения вывода процесса в C#?

У меня проблема с асинхронным чтением вывода одного процесса в C#. Я нашел несколько других подобных вопросов на этом сайте, но они мне не очень помогают. Вот что я делаю:

  1. Создаю новый процесс
  2. Устанавливаю startinfo -FileName, Arguments, CreateNoWindow(true), UseShellExecute(false), RedirectStandardOutput(true)
  3. Добавить обработчик событий в OutputDataReceived;
  4. Запуск процесса, BeginOutputReadLine и затем WaitForExit().

Работает нормально, но в выводе запущенного процесса выводятся проценты (%), которые я хочу получить, но не могу, так как мой код читается построчно, а проценты не отображаются .

Пример:

%0,%1...%100
Finished.

Мой вывод:

%0
Finished. 

Вот текущий код моей программы:

StringBuilder sBuilder = new StringBuilder();
static void proc_OutputDataReceived(object sender, DataReceivedEventArgs e)
{
    sBuilder.AppendLine(e.Data);
}

static void CommandExecutor()
{
    Process process = new Process
    {
        StartInfo = new ProcessStartInfo
        {
            FileName = /*path of the program*/,
            Arguments = /*arguments*/,
            CreateNoWindow = true,
            UseShellExecute = false,
            WindowStyle = ProcessWindowStyle.Hidden,
            RedirectStandardOutput = true
        }
    };

    process.OutputDataReceived += new DataReceivedEventHandler(proc_OutputDataReceived);

    process.Start();

    process.BeginOutputReadLine();

    process.WaitForExit();
}
7
задан Gilles 'SO- stop being evil' 2 March 2012 в 12:25
поделиться