【发布时间】:2016-06-01 11:04:19
【问题描述】:
我陷入了必须从 url 列表中下载多个文件的情况。我发现Parallel.ForEach 是一个解决方案,它确实比简单的 foreach 运行得更快。但此解决方案不会等待所有下载完成。
List<string> list = new List<string>() {"url1","url2","url3",... };
public async void downloadSimpleFile(string fileUrl) {
//download file logic
}
await Task.Factory.StartNew(() => Parallel.ForEach(list,
new ParallelOptions { MaxDegreeOfParallelism = 10 }, downloadSimpleFile));
我也在绑:
public async Task<bool> downloadSimpleFile(string fileUrl) {
//download file logic
return true;
}
现在我该如何在Parallel.ForEach 中使用downloadSimpleFile,因为上面提到的代码不再工作了?
【问题讨论】:
-
它运行得更快因为它没有等待。正如您链接到的问题中所说,您可能不想这样做。只需创建所有任务并使用
Task.WhenAll等待完成。
标签: c# asynchronous foreach parallel-processing