异步获取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命令行输出内容_第1张图片

你可能感兴趣的:(异步获取CMD命令行输出内容)