我已经构建了一个简单的.NET 4自定义下载程序控制台应用程序,并且发现我得到的下载速度比预期慢得多 .
使用DownloadFile()或DownloadFileAsync()方法,磁盘上的文件大小增长的速度最多只是使用Firefox下载相同文件时的五分之一,可能接近十分之一 .
关于S.O.还有很多其他问题 . 关于使用WebClient的性能不佳,但它们似乎都取决于连接时间,而不是转移开始后的实际比特率 . 我通常下载大文件(几十MB或更大),所以它是实际的文件传输速率,这很重要 . 我已将WebClient实例的Proxy属性设置为null以帮助提高连接速度,但正如我所说,这不是我关心的问题 .
这有什么明显的原因吗?我知道很多程序运行多个线程,但我认为这只适用于同时下载多个文件 . 为什么单个下载线程的限制应该比可用带宽少得多呢?
1 回答
我做了一个类似的项目,确定webclient很慢 . 我可以建议使用BITS . 它具有恢复功能,前台下载速度比webclient快 .
我使用自己的优化SharpBits.Net,随意使用它:http://code.google.com/p/sevenupdate/source/browse/#hg%2FExternals%2FSharpBits.Base