Sdílet prostřednictvím


DataReceivedEventArgs.Data Vlastnost

Definice

Získá řádek znaků, který byl zapsán do přesměrovaného výstupního datového Process proudu.

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

Hodnota vlastnosti

Řádek zapsaný objektem přidruženým Process k jeho přesměrování StandardOutput nebo StandardError streamu.

Příklady

Následující příklad kódu ukazuje jednoduchou obslužnou rutinu události přidruženou k OutputDataReceived události. Obslužná rutina události přijímá řádky textu z přesměrovaného StandardOutput datového proudu, formátuje text a zapisuje text na obrazovku.

using namespace System;
using namespace System::IO;
using namespace System::Diagnostics;
using namespace System::Text;

ref class StandardAsyncOutputExample
{
private:
    static int lineCount = 0;
    static StringBuilder^ output = nullptr;

public:
    static void Run()
    {
        Process^ process = gcnew Process();
        process->StartInfo->FileName = "ipconfig.exe";
        process->StartInfo->UseShellExecute = false;
        process->StartInfo->RedirectStandardOutput = true;
        output = gcnew StringBuilder();
        process->OutputDataReceived += gcnew DataReceivedEventHandler(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();

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

private:
    static void OutputHandler(Object^ sender, DataReceivedEventArgs^ e)
    {
        // Prepend line numbers to each line of the output.
        if (!String::IsNullOrEmpty(e->Data))
        {
            lineCount++;
            output->Append("\n[" + lineCount + "]: " + e->Data);
        }
    }
};

int main()
{
    StandardAsyncOutputExample::Run();
}
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

Poznámky

Při přesměrování StandardOutput nebo StandardError datového proudu na obslužnou Process rutinu události je vyvolána událost pokaždé, když proces zapíše řádek do přesměrovaného datového proudu. Vlastnost Data je řádek, který zapisuje Process do přesměrovaného výstupního datového proudu. Obslužná rutina události může použít Data vlastnost k filtrování výstupu procesu nebo zápisu výstupu do alternativního umístění. Můžete například vytvořit obslužnou rutinu události, která uloží všechny výstupní řádky chyb do určeného souboru protokolu chyb.

Čára je definována jako posloupnost znaků následovaná odřádkováním ("\n") nebo návratem na začátek řádku bezprostředně následovaným odřádkováním ("\r\n"). Znaky řádku jsou kódovány pomocí výchozí systémové znakové stránky ANSI. Vlastnost Data neobsahuje ukončující návrat na začátek řádku ani odřádkování.

Při zavření přesměrovaného datového proudu se do obslužné rutiny události odešle řádek s hodnotou null. Ujistěte se, že obslužná rutina události vlastnost před přístupem správně zkontroluje Data . Statickou metodu String.IsNullOrEmpty můžete například použít k ověření Data vlastnosti v obslužné rutině události.

Platí pro