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++;
    }

Ответы (0 шт):