DataReceivedEventArgs.Data Eigenschaft
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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.