Estoy comenzando una aplicación de consola, pero cuando redirijo la salida estándar, ¡siempre obtengo nada!process.standardoutput.ReadToEnd() ¿siempre vacío?
Cuando no redirigirlo, y la haga CreateNoWindow
-false
, veo todo correctamente en la consola, pero cuando vuelvo a dirigir él, StandardOutput.ReadToEnd()
siempre devuelve una cadena vacía.
Process cproc = new Process();
cproc.StartInfo.CreateNoWindow = true;
cproc.StartInfo.FileName = Dest;
cproc.StartInfo.RedirectStandardOutput = true;
cproc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
cproc.StartInfo.UseShellExecute = false;
cproc.EnableRaisingEvents = true;
cproc.Start();
cproc.Exited += new EventHandler(cproc_Exited);
while(!stop)
{
result += cproc.StandardOutput.ReadToEnd();
}
El EventHandler cproc_exited
simplemente establece stop
a true
. ¿Alguien puede explicar por qué result
siempre es string.Empty
?
si la cambio a mientras {} s + = convproc.StandardOutput.ReadToEnd() (parada!); me sale un punto muerto – alex
¡heey, funciona! parece que mi amigo (que creó el programa de la consola) lo estropeó. ¡escribe todo en la secuencia de error! Tendré que hablar con él, tal vez él pueda arreglar esto. Gracias por su respuesta rápida! me salvaste de estar sentado horas y horas frente a mi pc e intentando buscar un error estúpido :) – alex
@alex: saca ese bucle while - no debería estar ahí.Idealmente, use hilos separados: uno para leer desde 'StandardOutput' y otro para leer desde 'StandardError'. –