如果我在下面的代码中使用 ForEachAsync,我应该使用列表还是并发集合?
var images = new List<Image>(); // or a concurrency collection?
await users.ForEachAsync(async u =>
{
Image image = await DownloadImageAsync(u.ImageId);
images.Add(image);
});
最佳答案
我会这样做:
// Create a list of tasks
var imageTasks = new List<Task<Image>>();
// Use ForEachAsync to add tasks to the list
await users.ForEachAsync(u => imageTasks.Add(DownloadImageAsync(u.ImageId)));
// Wait for all tasks to complete
IEnumerable<Image> images = await Task.WhenAll(imageTasks);
使用ForEachAsync
的问题你所拥有的方式是它接受 Action<T>
这是不能等待的。这意味着ForEachAync
可能会先于所有 DownloadImageAsync
完成调用已完成。
关于c# - ForEachAsync 并将项目添加到外部集合 - 列表还是并发集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59896825/