RT,截取CMD的输出流,并显示在自己的一个richtextbox中, 
关键读取流数据部分代码如下:
     String cmdline = "ping 10.196.12.1 -t";
            Proc.StandardInput.WriteLine(cmdline);            StreamReader Reader = Proc.StandardOutput;
            //string output = Reader.ReadLine();
            string output;
            while (!Reader.EndOfStream)
            {
                Application.DoEvents();
                output = Reader.ReadLine();
                this.richTextBox1.AppendText(output+"\n");
                this.richTextBox1.ScrollToCaret();
                //Reader.BaseStream.Flush();                
            }
            Proc.StandardInput.WriteLine("exit");
现在问题来了,如果此处的CMD命令不是ping 10.196.12.1 -t  , 而是其他命令,在这个命令执行过程中,CMD有一段时间暂时无输出,那么WHILE循环是不是在CMD暂时无输出的时候就退出了呢? 
求各位高人简答,小弟新手...

解决方案 »

  1.   

    是不是可以這樣:
    while(true)接收cmd輸入exit作為條件終斷while.
      

  2.   

    通过OutputDataReceived来获取Process输出,不要用while            Process proc = new Process();
                proc.StartInfo.RedirectStandardOutput = true;
                proc.OutputDataReceived += (s, e) =>
                    {
                        Console.WriteLine(e.Data);
                    };
                proc.Start();
                proc.BeginOutputReadLine();