Capturing process output via OutputDataReceived event

c#, process, stdout

Solution

You need to call

mProcess.BeginOutputReadLine();

BeginOutputReadLine - "Begins asynchronous read operations on the redirected StandardOutput stream of the application."

Problem

I'm trying to capture process output in "realtime" (while it's running). The code I use is rather simple (see below). For some strange reason the OutputDataReceived event is never called. Why? ``` private void button2_Click(object sender, EventArgs e) { // Setup the process start info var processStartInfo = new ProcessStartInfo("ping.exe", "-t -n 3 192.168.100.1") { UseShellExecute = false, RedirectStandardOutput = true }; // Setup the process mProcess = new Process { StartInfo = processStartInfo, EnableRaisingEvents = true }; // Register event mProcess.OutputDataReceived += OnOutputDataReceived; // Start process mProcess.Start(); mProcess.WaitForExit(); } void OnOutputDataReceived(object sender, DataReceivedEventArgs e) { //Never gets called... } ```

Original source