I have this block of code, which I'm using to enter a command and retrieve the result:

Code:
private void Cmd(string command, string parameter, object stream)
        {

            StreamWriter writer = (StreamWriter)stream;
            StreamWriter input;
            StreamReader output;

            Process process = new Process();

            try
            {
                process.StartInfo.UseShellExecute = false;
                process.StartInfo.CreateNoWindow = true;
                process.StartInfo.RedirectStandardOutput = true;
                process.StartInfo.RedirectStandardInput = true;
                process.StartInfo.FileName = "cmd";
                process.Start();

                input = process.StandardInput;
                output = process.StandardOutput;
                input.WriteLine("help");

                while(!output.EndOfStream) //Locks when reach end of stream
                {
                    writer.WriteLine(output.ReadLine());
                    Debug.WriteLine(output.ReadLine());
                }
                
            }
            catch (Exception e)
            {
                InsertLog(2, "Could not run CMD command");
                writer.WriteLine("Not valid. Ex: " + e.Message);
            }

            writer.Flush();
        }
It works, except that the application locks when I reach the line highlighted on the code. On debug the yellow arrow simply disappear when reaches the while loop for the last time (end of stream).