Estoy escribiendo una aplicación de formato C# que inicia un segundo proceso para ejecutar comandos de shell como "dir" y "ping". Redirijo la salida del segundo proceso para que mi aplicación pueda recibir el resultado del comando. Funciona aproximadamente bien.C#: obtener el resultado del comando de shell externo por línea
El único problema es que mi aplicación winform recibe el resultado de la línea de comandos como un todo en lugar de línea por línea. Por ejemplo, tiene que esperar a que finalice el comando externo "ping" (que toma muchos segundos o más) y luego recibe toda la salida (muchas líneas) a la vez.
Lo que quiero es que la aplicación reciba la salida de cmdline en tiempo real, es decir, por líneas no por bloque. ¿Es esto factible?
Estoy usando este código para leer la salida: tiempo (! (Resultado = proc.StandardOutput.ReadLine()) = null)
Pero no funciona de la manera que esperaba. Gracias de antemano.
EDIT: Aquí está el código que estoy utilizando:
System.Diagnostics.ProcessStartInfo procStartInfo = new
System.Diagnostics.ProcessStartInfo("cmd", "/c " + command);
procStartInfo.WindowStyle = ProcessWindowStyle.Hidden;
// The following commands are needed to redirect the standard output.
procStartInfo.RedirectStandardOutput = true;
procStartInfo.UseShellExecute = false;
procStartInfo.CreateNoWindow = true;
// Now we create a process, assign its ProcessStartInfo and start it
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo = procStartInfo;
proc.Start();
// Get the output into a string
string result;
try {
while ((result = proc.StandardOutput.ReadLine()) != null)
{
AppendRtfText(result+"\n", Brushes.Black);
}
} // here I expect it to update the text box line by line in real time
// but it does not.
[posible duplicado] (http://stackoverflow.com/questions/ 415620/redirect-console-output-to-textbox-in-separate-program-c) –
Mostrar el código que ha intentado será útil. –