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

摘要:
使用System.Linq;使用System.Text;process.BegginOutputReadLine();文本);
当控制台命令使用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命令行输出内容》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Bellman-Ford最短路径数据结构习题--栈与队列(2)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

运行软件出现:模块“msvcp110.dll”已加载,但找不到入口点DllRegister

根据百度大多数回答来说 1:先是出现   无法启动程序,因为计算机丢失mfc110.dll 尝试重新安装该程序以解决问题   错误处理:下载或者在别人电脑上拷一份 如:'msvcp110.dll‘ 这类文件然后复制粘贴到系统盘即使/C/windows/system32或者64位系统就放到syswow64     楼主亲测是不能成功的。至少大多数情况是这样...

WebView2简单试用(五)—— 自定义用户数据文件夹

默认情况下,WebView2程序的用户数据是按程序独立存储的: 桌面应用位置是当前路径,以 xxx.exe.WebView2命名 UWP程序在ApplicationDataLocalFolder 程序包文件夹中的子文件夹 这么做的好处是程序具有独立的会话信息。但很多时候我们需要自定义用户数据存储的位置,例如: 程序的根目录可能没有写入权限...

添加串口和虚拟终端输出帮助调试

在使用IAR开发STM32项目时,使用串口或者是虚拟终端来输出我们想看的信息是一个非常好而且简便的方式。 首先来看看串口怎么实现信息输出。简单来说串口输出信息就是将标准输出重定向到串口,在上位机的超级终端或者串口助手等工具中查看结果。 在使用串口之前要配置串口,这一点是串口应用的基本知识,如果要通过串口输入参数可能还需要使用中断。关于串口配置和终端配置,应...

C语言中位域(bit fields)的可移植问题

 网上有文章说C语言的“位域”(bit fields)有可移植性的问题,原因是不同的编译器对位域的实现不同。   我决定用实验验证一下。   一、 实验过程:   1. 准备实验程序   这 是谭浩强C语言课本上第12章12.2节的位域示例程序:   main() {   struct bs   {   unsigned a:1;  ...

jmeter压力测试的简单实例+badboy脚本录制(一个简单的网页用户登录测试的结果)

JMeter的安装:在网上下载,在下载后的zip解压后,在bin目录下找到JMeter.bat文件,双击就可以运行JMeter.  http://jmeter.apache.org/ 在使用jmeter前要先下载jdk包,配置java环境。(参见Java环境配置教程) 配置完成后在运行窗口检查一下java -version确定java环境配置完成。 一、利...

Python subprocess.Popen communicate() 和wait()使用上的区别

之所以会纠结到这个问题上是因为发现在调用Popen的wait方法之后程序一直没有返回。google发现wait是有可能产生死锁的。为了把这个问题彻底弄清楚,搜索一些资料过来看看: 原文链接:http://blog.csdn.net/carolzhang8406/article/details/22286913 看到别人的例子: 今天遇到的一个问题。简单说就...