DataReceivedEventArgs.Data Propriedade

Definição

Recebe a linha de caracteres que foi escrita para um fluxo de saída redirecionado Process .

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

Valor de Propriedade

A linha que foi escrita por um associado Process ao seu redirecionamento StandardOutput ou StandardError stream.

Exemplos

O exemplo de código seguinte ilustra um gestor simples de eventos associado ao OutputDataReceived evento. O gestor de eventos recebe linhas de texto do fluxo redirecionado StandardOutput , formata o texto e escreve o texto no ecrã.

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

Observações

Quando redireciona o StandardOutput fluxo ou StandardError de a Process para o seu gestor de eventos, um evento é levantado cada vez que o processo escreve uma linha para o fluxo redirecionado. A Data propriedade é a linha que escreveu Process para o fluxo de saída redirecionado. O seu gestor de eventos pode usar a Data propriedade para filtrar a saída do processo ou escrever a saída para uma localização alternativa. Por exemplo, pode criar um gestor de eventos que armazene todas as linhas de saída de erro num ficheiro de registo de erros designado.

Uma linha é definida como uma sequência de caracteres seguida por um avanço de linha ("\n") ou um retorno de carro imediatamente seguido por um avanço de linha ("\r\n"). Os caracteres de linha são codificados usando a página de código ANSI padrão do sistema. A Data propriedade não inclui o retorno do carro de terminação nem a alimentação da linha.

Quando o fluxo redirecionado é fechado, uma linha nula é enviada para o gestor de eventos. Certifique-se de que o seu gestor de eventos verifica a Data propriedade adequadamente antes de a aceder. Por exemplo, pode usar o método String.IsNullOrEmpty estático para validar a Data propriedade no seu gestor de eventos.

Aplica-se a