DataReceivedEventArgs.Data Egenskap

Definition

Hämtar raden med tecken som skrevs till en omdirigerad Process utdataström.

public:
 property System::String ^ Data { System::String ^ get(); };
public string? Data { get; }
public string Data { get; }
member this.Data : string
Public ReadOnly Property Data As String

Egenskapsvärde

Raden som skrevs av en associerad Process till dess omdirigering StandardOutput eller StandardError ström.

Exempel

Följande kodexempel illustrerar en enkel händelsehanterare som är associerad med OutputDataReceived händelsen. Händelsehanteraren tar emot textrader från den omdirigerade StandardOutput strömmen, formaterar texten och skriver texten till skärmen.

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();
    }
}
Imports System.IO
Imports System.Diagnostics
Imports System.Text

Module Module1
    Dim lineCount As Integer = 0
    Dim output As StringBuilder = New StringBuilder()

    Sub Main()
        Dim process As New Process()
        process.StartInfo.FileName = "ipconfig.exe"
        process.StartInfo.UseShellExecute = False
        process.StartInfo.RedirectStandardOutput = True
        AddHandler process.OutputDataReceived, AddressOf OutputHandler
        process.Start()

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

        Console.WriteLine(output)

        process.WaitForExit()
        process.Close()

        Console.WriteLine(Environment.NewLine + Environment.NewLine + "Press any key to exit.")
        Console.ReadLine()
    End Sub

    Sub OutputHandler(sender As Object, e As DataReceivedEventArgs)
        If Not String.IsNullOrEmpty(e.Data) Then
            lineCount += 1

            ' Add the text to the collected output.
            output.Append(Environment.NewLine + "[" + lineCount.ToString() + "]: " + e.Data)
        End If
    End Sub
End Module

Kommentarer

När du omdirigerar StandardOutput eller StandardError strömmar en Process till händelsehanteraren utlöses en händelse varje gång processen skriver en rad till den omdirigerade strömmen. Egenskapen Data är den rad som Process skrev till den omdirigerade utdataströmmen. Händelsehanteraren kan använda egenskapen Data för att filtrera processutdata eller skriva utdata till en alternativ plats. Du kan till exempel skapa en händelsehanterare som lagrar alla felutdatarader i en angiven felloggfil.

En rad definieras som en sekvens med tecken följt av en radmatning ("\n") eller en vagnretur omedelbart följt av en radmatning ("\r\n"). Radtecken kodas med hjälp av standardsystemets ANSI-kodsida. Egenskapen Data innehåller inte den avslutande vagnreturen eller radmatningen.

När den omdirigerade strömmen stängs skickas en null-rad till händelsehanteraren. Se till att händelsehanteraren kontrollerar Data egenskapen på rätt sätt innan du kommer åt den. Du kan till exempel använda den statiska metoden String.IsNullOrEmpty för att verifiera Data egenskapen i händelsehanteraren.

Gäller för