Я пытаюсь загрузить строки (xml) из нескольких источников асинхронно и подождать, пока все завершится.
Но при использовании Task.Factory.StartNew
для создания нескольких задач все они загружаются синхронно, одна за другой. Все строки вместе должны весить приблизительно. 200 КБ, поэтому это не должно быть проблемой для моего интернет-соединения, которое может загружать 640 КБ в секунду.
Вот код, который я использую:
var taskList = new List<Task>();
foreach (var feed in feeds)
taskList.Add(Task.Factory.StartNew(() => DownloadFeed(feed)));
Task.WaitAll(taskList.ToArray());
Способ загрузки:
void DownloadFeed(string url)
{
using (Webclient client = new WebClient())
concurrentBag.Add(client.DownloadString(url));
}
Асинхронные методы WebClient работают, они загружаются асинхронно, сокращая общее время загрузки до доли. И хотя этого должно быть достаточно для моего проекта, мне все еще интересно, что не так с моим кодом, использующим задачи?