Tengo una aplicación que llama a otro proceso en una ventana de comandos y ese proceso tiene estadísticas de actualización que salen a la ventana de la consola. Pensé que esta era una operación bastante simple, pero parece que no puedo hacer que funcione. ¿Me estoy perdiendo de algo?ProcessInfo y RedirectStandardOutput
string assemblyLocation = Assembly.GetExecutingAssembly().Location;
Process process = new Process
{
ProcessStart =
{
RedirectStandardOutput = true,
UseShellExecute = false,
WindowStyle = ProcessWindowStyle.Hidden,
Arguments = arg,
FileName = assemblyLocation.Substring(0, assemblyLocation.LastIndexOf("\\")) + "\\ffmpeg.exe",
CreateNoWindow = true
}
};
process.Start();
Console.WriteLine(process.StandardOutput.ReadToEnd());
process.WaitForExit();
Lo ideal sería que lo que me gustaría es que la salida cambia dentro de ese proceso que golpean o los datos entra en el lector que se añaden eventos fuera de él.
Cualquier ayuda sería genial, siento que esta es una pregunta para principiantes pero parece que falta algo.
quiere decir que otro hilo u otro proceso? Puedo ejecutar el proceso desde la línea de cmd y la salida se ve bien. –
Quise decir un proceso diferente al que estás intentando. En la instancia que encontré, cuando redirigí el stdout, el proceso no despejaba el búfer de salida cuando se iniciaba de esta manera, y por lo tanto, el flujo simplemente llegaba al final. Esto puede o no ser su problema. Vea el ejemplo de mi código sobre cómo he manejado esto en mis propias aplicaciones. – patjbs
Puedo hacer que esto funcione con la mayoría de las aplicaciones de consola pero no con PowerShell. ¿Alguna idea? –