Let's take a look at your command line and figure out what it's doing
cmd /c start iperf arguments
1) cmd - run the command processor cmd.exe
2) start iperf - run
another command processor and ask it to run iperf
The Process instance you have redirected is the first command processor.
If you had done
cmd /c iperf arguments
then the redirection would probably work as iperf would be sharing the console window created for cmd.exe. It is a common misconception to think that cmd.exe starts a console but it does not, and cmd.exe is simply a user interface program that runs in a console window. When starting a separate process via the Process class, cmd.exe is usually not needed and often just gets in the way.
The simplest and correct command line for use with the Process class would be
iperf arguments
So use something like this
ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = Full path to iperf.exe
psi.Arguments = iperf arguments
psi.CreateNoWindow = true;
psi.UseShellExecute = false;
Process p = new Process();
p.StartInfo = psi;
p.Start();
string output = p.StandardOutput.ReadToEnd();
p.WaitForExit();
someTextBox.Text = output;
Note that it's usual to read the output before waiting for exit.
Alan.