WebClient.DownloadFileAsync - ограничить кол-во одновременных загрузок
Имеется большое кол-во ссылок на изображения из ВК (4000+). Если скачивать их через приведенный ниже код, то DownloadFileAsync сразу кидает в поток огромное кол-во одновременных загрузок. Возможно сервера ВК блочат такую нагрузку и в по итогу 20-30 изображений не скачивается (висит цикл бесконечно). Как ограничить кол-во одновременных загрузок? (При синхронной DownloadFile все скачивается нормально, но медленно)
async private void DownloadButton_Click(object sender, EventArgs e)
{
await Task.Run(() =>
{
downloadComplete = 0;
for (int i = 0; i < url_list.Count; i++)
{
WebClient myWebClient = new WebClient();
myWebClient.DownloadFileCompleted += new AsyncCompletedEventHandler(DownloadFileCompleted);
Uri url = new Uri(url_list[i]);
myWebClient.DownloadFileAsync(url, @"Pictures\" + i + ".jpg");
}
while (downloadComplete < url_list.Count) { Task.Delay(1000); }
});
}
private void DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
{
downloadComplete++;
}