C#Cmd实时输出同步交互不会堵塞

调用cmd只能用流数据实时获取输出内容,同步输入输出不及时处理一样会堵塞,但你可以改动代码采用异步的方式,下面的实现方式和socket的方法一样,其他语言也是一样的思路。

 public class ApiCmd
 {
     public int time=100;//随时设置等待时间
     public ApiCmd(int _time=100) { time = _time; }
     public const int ReadSize = 2048;//缓冲区大小
     private Encoding encoding;//字符编码
     private Process cmd;//cmd进程
     public event Action Exited;//退出事件
     public event Action<string, StreamWriter> output;//输出事件
     private byte[] ReadBuffer = new byte[ReadSize];//缓冲区
     private List<byte> ReadList = new List<byte>();//暂存区
     public void Start()
     {
         cmd = new Process();
         cmd.StartInfo.FileName = "cmd.exe";
         cmd.StartInfo.UseShellExecute = false;//是否使用操作系统shell启动
         cmd.StartInfo.RedirectStandardInput = true;//接受来自调用程序的输入信息
         cmd.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值