DataReceivedEventArgs.Data Property


Gets the line of characters that was written to a redirected Process output stream.

Namespace:   System.Diagnostics
Assembly:  System (in System.dll)

public string Data { get; }

Property Value

Type: System.String

The line that was written by an associated Process to its redirected StandardOutput or StandardError stream.

When you redirect the StandardOutput or StandardError stream of a Process to your event handler, an event is raised each time the process writes a line to the redirected stream. The Data property is the line that the Process wrote to the redirected output stream. Your event handler can use the Data property to filter process output or write output to an alternate location. For example, you might create an event handler that stores all error output lines into a designated error log file.

A line is defined as a sequence of characters followed by a line feed ("\n") or a carriage return immediately followed by a line feed ("\r\n"). The line characters are encoded using the default system ANSI code page. The Data property does not include the terminating carriage return or line feed.

When the redirected stream is closed, a null line is sent to the event handler. Ensure your event handler checks the Data property appropriately before accessing it. For example, you can use the static method String.IsNullOrEmpty to validate the Data property in your event handler.

The following code example illustrates a simple event handler associated with the OutputDataReceived event. The event handler receives text lines from the redirected StandardOutput stream, formats the text, and writes the text to the screen.

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))
                output.Append("\n[" + lineCount + "]: " + e.Data);


        // Asynchronously read the standard output of the spawned process. 
        // This raises OutputDataReceived events for each line of output.

        // Write the redirected output to this application's window.


        Console.WriteLine("\n\nPress any key to exit.");

.NET Framework
Available since 2.0
Return to top