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