异步获取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 @ 2014-02-27 09:00  zzg168  阅读(442)  评论(0编辑  收藏  举报