¿Cómo leer para finalizar la salida del proceso de forma asíncrona en C #?

Tengo problemas para leer la salida de un proceso de forma asíncrona en C #. Encontré otras preguntas similares en este sitio, pero en realidad no me ayudan. Esto es lo que hago:

Hacer un nuevo procesoSet startinfo -FileName, Arguments, CreateNoWindow (true), UseShellExecute (false), RedirectStandardOutput (true) Agregar controlador de eventos a OutputDataReceived;Iniciar proceso, BeginOutputReadLine y luego WaitForExit ().

Funciona bien, pero la salida del proceso iniciado escribe algunos porcentajes %) que quiero obtener pero no puedo porque mi código lee línea por línea y los porcentajes no aparecen.

Ejemplo

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

Mi salida:

%0
Finished. 

Aquí está el código actual de mi programa:

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();
}

Respuestas a la pregunta(8)

Su respuesta a la pregunta