Низкая скорость загрузки при использовании WebClient - PullRequest
0 голосов
/ 18 марта 2011

Я создал простое пользовательское консольное приложение для загрузчика .NET 4 и обнаружил, что скорость загрузки, которую я получаю, намного ниже ожидаемой.

Используя методы DownloadFile () или DownloadFileAsync () , скорость, с которой файлы на диске увеличиваются в размере, в лучшем случае составляет одну пятую от той, которая наблюдается при загрузка того же файла с помощью Firefox, вероятно, ближе к одной десятой.

Есть много других вопросов о С.О. о низкой производительности с WebClient, но все они, похоже, зависят от времени соединения, а не от фактической скорости передачи битов после начала передачи. Обычно я загружаю большие файлы (несколько десятков МБ или больше), поэтому важна фактическая скорость передачи файлов. Я установил для свойства Proxy экземпляра WebClient значение null , чтобы повысить скорость соединения, но, как я уже сказал, это не проблема, с которой я все равно сталкиваюсь.

Есть ли очевидная причина для этого? Я знаю, что многие программы работают с несколькими потоками, но я подумал, что это действительно применимо только к одновременной загрузке нескольких файлов. И в любом случае, почему один поток загрузки должен быть ограничен настолько, чтобы пропускная способность была меньше?

1 Ответ

0 голосов
/ 02 апреля 2011

Я сделал похожий проект и определил, что веб-клиент работает медленно.Могу ли я предложить использовать биты.Он имеет возможность возобновления, и загрузка переднего плана происходит быстрее, чем веб-клиент.

Я использую свой собственный оптимизированный SharpBits.Net, не стесняйтесь его использовать: http://code.google.com/p/sevenupdate/source/browse/#hg%2FExternals%2FSharpBits.Base

...