使用Process类重定向时出现阻塞的解决方案

本文描述了在.Net Framework 1.1的WinForm应用中,使用Process类调用cmd.exe执行命令行操作时遇到的阻塞问题。通过分析和测试,作者发现问题是由于output和error管道满后子进程等待父进程读取导致的死锁。解决方案包括使用两个线程分别读取output和error,或者将RedirectStandardError设置为false。作者还探讨了process.WaitForExit()方法的作用,并在验证后决定去掉该方法,简化代码。
摘要由CSDN通过智能技术生成

 

【摘要】
    使用Process类重定向时遇到死锁问题,对Process的实现机制进行了一番思考,想看全文就点进去吧。

【全文】

[系统环境]
    .Net Framework 1.1,使用C#开发WinForm程序

[问题描述]
    程序中要调用外部程序cmd.exe执行一些命令行,并取得屏幕输出,使用了Process类,基本代码如下:


     Process  process  =  new  Process ();
     process . StartInfo . FileName  =  "cmd.exe" ;
     process . StartInfo . UseShellExecute  =  false ;
     process . StartInfo . RedirectStandardInput  =  true ;
     process . StartInfo . RedirectStandardOutput  = 
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值