异步获取CMD命令行输出内容

时间:2023-03-09 23:00:40
异步获取CMD命令行输出内容

当控制台命令使用process.Start(); 后可以直接显示输出内容,当然它是异步显示的不用等程序结束。代码如下:

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Diagnostics;namespace testApplication1{    public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();        }        private void button1_Click(object sender, EventArgs e)        {            using (Process process = new System.Diagnostics.Process())              {                 process.StartInfo.FileName = "ping";                 process.StartInfo.Arguments = "127.0.0.1 -t";                process.StartInfo.UseShellExecute = false;                process.StartInfo.CreateNoWindow = true;                  process.StartInfo.RedirectStandardOutput = true;                                 process.Start();                 process.BeginOutputReadLine();                  process.OutputDataReceived += new DataReceivedEventHandler(process_OutputDataReceived);              }          }        private void process_OutputDataReceived(object sender, DataReceivedEventArgs e)         {            if (!string.IsNullOrEmpty(e.Data))                this.AppendText(e.Data + Environment.NewLine);           }        public delegate void AppendTextCallback(string text);                  public void AppendText(string text)          {             if (this.textBox1.InvokeRequired)              {                  AppendTextCallback d = new AppendTextCallback(AppendText);                  this.textBox1.Invoke(d, text);             }             else             {                  this.textBox1.AppendText(text);                              }         }      }}

程序是一个ping -t的示例:

异步获取CMD命令行输出内容