遇到个问题想发帖、发现积分不够、有高手路过指点一下吧!

来源:互联网 发布:javascript 抢购 编辑:程序博客网 时间:2024/04/24 17:14

创建CMD进程,并且不关闭,怎么样读取CMD中信息显示到控件上。

 

 

我想用线程启动一个CMD进程  CMD是监听程序  不关闭状态的情况下   读取CMD显示的信息 返回到我的textbox上显示

现在的情况就是   我可以启动CMD   但是要CMD停止后才能返回结果,还有就是CMD启动之后 不关闭   程序走不下去  不能读取结果。

有没有办法一直开启CMD  并且每秒读取CMD的信息显示到textbox上。最好使用2个线程   一个运行CMD,一个负责读取并且显示。


目前我写的部分代码   -----有问题


急    感谢各位高手的指点   给点思路吧。

//button事件   负责开启服务
 private void button1_Click(object sender, EventArgs e)
        {

           //创建一个线程并且运行CMD进程方法   
            Thread t = new Thread(new ThreadStart(Cmd));
            Thread s = new Thread(new ThreadStart(form));

           Thread.Sleep(500);
         
           t.Start();
           s.Start();
          
         }
//CMD方法
public  void Cmd()
        {
            //CMD要执行的语句
            string[] cmd = new string[] { "ping 192.168.1.1 -n", "ping 127.0.0.1 -t" };
            //创建CMD进程并且配置
            p.StartInfo.FileName = "cmd.exe";
            p.StartInfo.UseShellExecute = false;
            p.StartInfo.RedirectStandardInput = true;
            p.StartInfo.RedirectStandardOutput = true;
            p.StartInfo.RedirectStandardError = true;
            p.StartInfo.CreateNoWindow = true;
            //启动进程,并且永不关闭。
            p.Start();
            p.StandardInput.AutoFlush = true;
            for (int i = 0; i < cmd.Length; i++)
            {
                p.StandardInput.WriteLine(cmd[i].ToString());
            }
          
                 
          }
   //读取CMD显示的信息   并且调用显示消息方法、把信息传递给showMessage方法用来显示到textbox。 
 public void form()
        {
               
            string strRst = p.StandardOutput.ReadToEnd();
            this.textBox1.BeginInvoke(new System.EventHandler(showMessage), strRst);
        }

//在控件textbox上显示消息的方法
 private void showMessage(object o, System.EventArgs e)
        {

         

            this.textBox1.Text = o.ToString();

        }

 

原创粉丝点击