2012-07-30 4 views
1

Мне было интересно, можно ли увеличить размер буфера при загрузке данных Async WebClient, поскольку в настоящее время он нажимает максимум 320 кБ/с.C# Скорость загрузки WebClient

Мой текущий код:

using (WebClient Client = new WebClient()) 
{ 
    byte[] Buffer = File.ReadAllBytes(this.WorkItem.FileLocation); 

    Client.UploadProgressChanged += new UploadProgressChangedEventHandler(Client_UploadProgressChanged); 
    Client.UploadDataCompleted += new UploadDataCompletedEventHandler(Client_UploadDataCompleted); 
    Client.UploadDataAsync(new Uri("-snip-"), Buffer); 
} 

Редактировать
соединения не является ограничивающим фактором. (его 300-миллиметровое соединение, веб-серверы нажимают содержимое на отметке ~ 30-40 мБ/с)

+0

и какова скорость вашего соединения? – nothrow

+0

Вы уверены, что не является пределом вашей сети/связи? 0,3 Мбит/с вверх по потоку звучит о праве для многих подключений ... –

+0

Re your edit; это вы вызываете к себе? в значительной степени любая другая комбинация может быть другими факторами, которые дросселируют вас ... –

ответ

3

Если вам нужен больше контроля над буферизацией данных, вам необходимо использовать класс HttpWebRequest. С помощью этого класса вы можете выбрать чтение буфера чтения с FileStream, а затем сколько вы пишете в сетевой поток. Выполнение 4MB-чтения и 32KB-записей было оптимальным для максимизации пропускной способности моей сети (хотя вам придется делать свои собственные тесты, чтобы увидеть, какие буферы работают лучше всего в вашем сценарии).

Смежные вопросы