gpt4 book ai didi

c# - ForEachAsync 并将项目添加到外部集合 - 列表还是并发集合?

转载 作者:行者123 更新时间:2023-12-02 01:10:48 34 4
gpt4 key购买 nike

如果我在下面的代码中使用 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/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com