【摘要】
使用Process类重定向时遇到死锁问题,对Process的实现机制进行了一番思考,想看全文就点进去吧。
【全文】
Process process = new Process ();
process . StartInfo . FileName = "cmd.exe" ;
process . StartInfo . UseShellExecute = false ;
process . StartInfo . RedirectStandardInput = true ;
process . StartInfo . RedirectStandardOutput = true
使用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 = true

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





