异步获取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的示例:

 

posted @ 2010-06-07 13:14  wangbin5542  阅读(1681)  评论(0编辑  收藏  举报