Lire en anglais

Partager via


Process.OutputDataReceived Événement

Définition

Se produit quand une application écrit dans son flux StandardOutput redirigé.

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

Type d'événement

Attributs

Exemples

L’exemple suivant montre comment effectuer des opérations de lecture asynchrones sur le flux redirigé StandardOutput de la ipconfig commande.

L’exemple crée un délégué d’événement pour le OutputHandler gestionnaire d’événements et l’associe à l’événement OutputDataReceived . Le gestionnaire d’événements reçoit des lignes de texte du flux redirigé StandardOutput , met en forme le texte et l’enregistre dans une chaîne de sortie qui apparaît ultérieurement dans la fenêtre de console de l’exemple.

C#
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();
    }
}

Remarques

L’événement OutputDataReceived indique que l’associé Process a écrit une ligne qui se termine par une nouvelle ligne (retour chariot( CR), flux de ligne (LF) ou CR+LF) dans son flux redirigé StandardOutput .

L’événement est activé pendant les opérations de lecture asynchrones sur StandardOutput. Pour démarrer des opérations de lecture asynchrones, vous devez rediriger le StandardOutput flux d’un Process, ajouter votre gestionnaire d’événements à l’événement OutputDataReceived et appeler BeginOutputReadLine. Par la suite, l’événement OutputDataReceived signale chaque fois que le processus écrit une ligne dans le flux redirigé StandardOutput , jusqu’à ce que le processus se termine ou appelle CancelOutputRead.

Notes

L’application qui traite la sortie asynchrone doit appeler la WaitForExit méthode pour s’assurer que la mémoire tampon de sortie a été vidée.

S’applique à

Produit Versions
.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

Voir aussi