Retardo de salida estándar del proceso C #

Desde un formulario C # estoy ejecutando unproceso con información de inicio similar aRedirigir la salida de la consola al cuadro de texto en un programa separado yC # obtiene salida del proceso mientras se ejecuta, el proceso se ejecuta correctamente, sin embargo, la salida tarda mucho en aparecer en elEvento DataReceived.

Me gustaría ver el texto tan pronto como el proceso lo genere; de acuerdo a¿No se puede capturar la salida estándar del proceso? (primer comentario) Necesito esperar hasta que se complete un búfer de 2 a 4 kb antes de que se active el evento.

Según lo solicitado, este es el código:

void pcs_OutputDataReceived(object sender, System.Diagnostics.DataReceivedEventArgs e)
{
    if (!string.IsNullOrEmpty(e.Data)) 
        textBox1.BeginInvoke((Action)delegate { textBox1.AppendText(text + "\n"); });
}

private void LER_Go_Click(object sender, EventArgs e)
{
    // variables LiDARExtRep contains the full path to an executable file
    // that runs in DOS and produces verbose output.
    // LER_Path.Text is the parameter passed to LiDARExtRep (only one arg for this example)
    ProcessStartInfo pStartInfo = new ProcessStartInfo(LiDARExtRep, LER_Path.Text);    
    pStartInfo.UseShellExecute = false;
    pStartInfo.ErrorDialog = false;
    pStartInfo.RedirectStandardError = true;
    pStartInfo.RedirectStandardInput = true;
    pStartInfo.RedirectStandardOutput = true;
    pStartInfo.CreateNoWindow = true;

    System.Diagnostics.Process pcs = new System.Diagnostics.Process();
    pcs.StartInfo = pStartInfo;

    bool pStarted = pcs.Start();

    pcs.OutputDataReceived += new DataReceivedEventHandler(pcs_OutputDataReceived);

    pcs.BeginOutputReadLine();
    pcs.WaitForExit();
}

No veo nada especial al respecto, es exactamente igual a los ejemplos a los que hice referencia ... un simple"Dir","/b/s" en el constructor debe producir los mismos resultados.

¿Hay alguna manera de disminuir el búfer a unos pocos bytes o una mejor manera de ejecutar una herramienta de línea de comandos y recibir la salida 'en tiempo real'?

Antecedentes: escribí varios programas de línea de comandos en C ++, que funcionanExcelente, pero la generación más joven parece tener miedo de DOS, por lo que estoy creando un formulario (GUI) para recopilar los parámetros de estas herramientas, ya que parece unmucho menos trabajo que tratar de poner una GUI en cada programa en C ++. Si no puedo obtener respuestas en tiempo real, tendré queUseShellExecute = true; y muestra la ventana de comandos.

Respuestas a la pregunta(1)

Su respuesta a la pregunta