Leer en inglés

Compartir a través de


Process.OutputDataReceived Evento

Definición

Se produce cada vez que una aplicación escribe una línea en su secuencia StandardOutput redirigida.

public event System.Diagnostics.DataReceivedEventHandler? OutputDataReceived;
public event System.Diagnostics.DataReceivedEventHandler OutputDataReceived;
[System.ComponentModel.Browsable(true)]
public event System.Diagnostics.DataReceivedEventHandler OutputDataReceived;

Tipo de evento

Atributos

Ejemplos

En el ejemplo siguiente se muestra cómo realizar operaciones de lectura asincrónicas en el flujo redirigido StandardOutput del ipconfig comando.

En el ejemplo se crea un delegado de eventos para el OutputHandler controlador de eventos y se asocia al OutputDataReceived evento. El controlador de eventos recibe líneas de texto de la secuencia redirigida StandardOutput , da formato al texto y lo guarda en una cadena de salida que se muestra más adelante en la ventana de la consola del ejemplo.

using System;
using System.IO;
using System.Diagnostics;
using System.Text;

class StandardAsyncOutputExample
{
    private static int lineCount = 0;
    private static StringBuilder output = new StringBuilder();

    public static void Main()
    {
        Process process = new Process();
        process.StartInfo.FileName = "ipconfig.exe";
        process.StartInfo.UseShellExecute = false;
        process.StartInfo.RedirectStandardOutput = true;
        process.OutputDataReceived += new DataReceivedEventHandler((sender, e) =>
        {
            // Prepend line numbers to each line of the output.
            if (!String.IsNullOrEmpty(e.Data))
            {
                lineCount++;
                output.Append("\n[" + lineCount + "]: " + e.Data);
            }
        });

        process.Start();

        // Asynchronously read the standard output of the spawned process.
        // This raises OutputDataReceived events for each line of output.
        process.BeginOutputReadLine();
        process.WaitForExit();

        // Write the redirected output to this application's window.
        Console.WriteLine(output);

        process.WaitForExit();
        process.Close();

        Console.WriteLine("\n\nPress any key to exit.");
        Console.ReadLine();
    }
}

Comentarios

El OutputDataReceived evento indica que el asociado Process ha escrito una línea terminada con una nueva línea (retorno de carro (CR), avance de línea (LF) o CR+LF) en su secuencia redirigida StandardOutput .

El evento se habilita durante las operaciones de lectura asincrónicas en StandardOutput. Para iniciar operaciones de lectura asincrónicas, debe redirigir la StandardOutput secuencia de un Process, agregar el controlador de eventos al evento y llamar a OutputDataReceivedBeginOutputReadLine. A partir de entonces, el OutputDataReceived evento señala cada vez que el proceso escribe una línea en la secuencia redirigida StandardOutput , hasta que el proceso sale o llama a CancelOutputRead.

Nota

La aplicación que procesa la salida asincrónica debe llamar al WaitForExit método para asegurarse de que se ha vaciado el búfer de salida.

Se aplica a

Producto Versiones
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

Consulte también