网上看了很多解决方案

有的说在最后一条命令执行"exit",

有的说重定向标准错误输出要设置成false(process.StartInfo.RedirectStandardError = false;) 

有的说命令执行完要获取输出信息,否则会一直等待↓↓↓↓↓

output = process.StandardOutput.ReadToEnd();

和errOutput = process.StandardError.ReadToEnd();

有的说要在等待程序执行完退出进程 process.WaitForExit();
............................................                   
看看来去结果都解决不了执行完命令获取不到输出,CMD挂起的问题!

直到最后意外发现StandardInput是个IO流,IO流线程回收机制是不会主动回收的,这个需要我们手动去关闭它才行,果不其然,添加完这行代码,里面就解决了:process.StandardInput.Close();                   

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓我的代码: ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

private string ExecutionCMDOrders(List<string> list,bool isReadRetu

更多推荐

C#使用Process操作CMD,process.StandardOutput.ReadToEnd阻塞/假死/获取不到信息/无法关闭CMD真正原因及解决方案!!