我正在尝试从多个来源异步下载字符串(xml),并等待所有操作完成。
但是当使用Task.Factory.StartNew
创建多个任务时,它们似乎都同步下载,一个接一个。所有组合的字符串应权重大约。 200kb,所以对于我的Internet连接来说应该不是一个问题,它每秒可以下载640kb。
这是我正在使用的代码:
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的异步方法可以正常工作,它们异步下载,从而将总下载时间缩短到一小部分。尽管这对于我的项目应该足够好,但是我仍然很好奇使用Tasks的代码有什么问题?