You will need to wait for the process to complete after reading the stream, otherwise you will have a dead end in your code. The problem is that your parent process blocks waiting for the child process to complete, and the child process waits for the parent process to read the result, so you have a dead end.
Here is a good and detailed description of the problem.
, , :
StreamReader sr = p.StandardOutput;
string message = p.StandardOutput.ReadToEnd();
p.WaitForExit();