C#获取命令行输出内容的方法简介

传统方式:

using (Process process= new System.Diagnostics.Process())

{

     process.StartInfo.FileName= "ping";

     process.StartInfo.Arguments= "www.ymind.net";

     // 必须禁用操作系统外壳程序process.StartInfo.UseShellExecute= false;

     process.StartInfo.CreateNoWindow= true;

     process.StartInfo.RedirectStandardOutput= true; process.Start();

     string output= process.StandardOutput.ReadToEnd();

     if (String.IsNullOrEmpty(output)== false)this.textBox1.AppendText(output+ "\r\n");

     process.WaitForExit(); process.Close();

 }

 

 
 

异步方式:

 
 
private void button3_Click(object sender, EventArgs e) { using (Process process = new System.Diagnostics.Process()) { process.StartInfo.FileName = "ping" ; process.StartInfo.Arguments = "www.ymind.net -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) { // 这里仅做输出的示例,实际上您可以根据情况取消获取命令行的内容 // 参考:process.CancelOutputRead() if (String.IsNullOrEmpty(e.Data) == false ) this.AppendText(e.Data + "\r\n" ); } #region 解决多线程下控件访问的问题 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); } } #endregion
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值