本文介绍了一种有效解决在使用C#编程时,Process.StandardOutput.ReadToEnd 方法导致程序卡死的问题的新方法。
最近在做一个编程项目,使用C#调用类似ssh、ftp、runas、adb shell之类的命令行工具,这些命令通常会有中间输入输出.网上推荐的方法是利用Process.StartInfo、Process.StandardInput和Process.StandOutput等属性来实现.但在实践中发现每次都会卡死在StandardOutput.Read或ReadToEnd上。经过分析后,我发现问题主要出在我没有正确处理好线程同步等问题。
在网上找了很多解决方案,包括多线程和不使用Error重定向的方法,但这些方法都不太理想。几十行代码只为获取几行输出,感觉很不合理。
突然间发现了一个非常简洁的解决办法。在网上找了很久都没有找到类似的信息,有点失望。所以决定分享出来给大家看看。
这个简捷的办法或许可以避免大家在实现这类功能时遇到同样的困扰。