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