Freigeben über


DataReceivedEventArgs.Data Eigenschaft

Definition

Ruft die Zeile der Zeichen ab, die in einen umgeleiteten Process Ausgabedatenstrom geschrieben wurde.

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

Eigenschaftswert

Die Zeile, die von einer umgeleiteten oder StandardError stream zugeordneten ProcessStandardOutput Zeile geschrieben wurde.

Beispiele

Das folgende Codebeispiel veranschaulicht einen einfachen Ereignishandler, der dem OutputDataReceived Ereignis zugeordnet ist. Der Ereignishandler empfängt Textzeilen aus dem umgeleiteten StandardOutput Datenstrom, formatiert den Text und schreibt den Text auf den Bildschirm.

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

Hinweise

Wenn Sie den StandardOutput Datenstrom StandardError eines Process Ereignisses an den Ereignishandler umleiten, wird jedes Mal ein Ereignis ausgelöst, wenn der Prozess eine Zeile in den umgeleiteten Datenstrom schreibt. Die Data Eigenschaft ist die Zeile, die in Process den umgeleiteten Ausgabedatenstrom geschrieben wurde. Der Ereignishandler kann die Eigenschaft verwenden, um die Data Prozessausgabe zu filtern oder die Ausgabe an einen alternativen Speicherort zu schreiben. Sie können z. B. einen Ereignishandler erstellen, der alle Fehlerausgabezeilen in einer festgelegten Fehlerprotokolldatei speichert.

Eine Zeile wird als Folge von Zeichen definiert, gefolgt von einem Zeilenvorschub ("\n") oder einer Wagenrücklauf, unmittelbar gefolgt von einem Zeilenvorschub ("\r\n"). Die Zeilenzeichen werden mit der Standardsystem-ANSI-Codeseite codiert. Die Data Eigenschaft enthält nicht den endenden Wagenrücklauf oder zeilenvorschub.

Wenn der umgeleitete Datenstrom geschlossen wird, wird eine NULL-Zeile an den Ereignishandler gesendet. Stellen Sie sicher, dass der Ereignishandler die Data Eigenschaft ordnungsgemäß überprüft, bevor Sie darauf zugreifen. Sie können beispielsweise die statische Methode String.IsNullOrEmpty verwenden, um die Data Eigenschaft in Ihrem Ereignishandler zu überprüfen.

Gilt für: