最初,我有以下内容:
foreach (Product product in products)
{
product.ImageUri = _imageClient.GetImageUri(product.GetImagePath());
}
我想做的是并行处理所有产品,而不是一次处理一个产品。我已将 _imageClient.GetImageUri(...) 更新为 _imageClient.GetImageUriAsync(...)。我现在可以执行以下操作:
List<Task<Uri>> tasks = new List<Task<Uri>>();
foreach (Product product in products)
{
Task<Uri> task = _imageClient.GetImageUriAsync(product.GetImagePath());
tasks.Add(task);
}
var results = await Task.WhenAll(tasks);
这种方法的问题是我现在必须循环遍历结果,将每个结果与正确的产品相匹配并分配属性。
有没有办法结合这两种方法,以便我可以将属性分配作为任务的一部分执行,以便所有方法都可以并行运行?
关于什么:
List<Task<Uri>> tasks = new List<Task<Uri>>();
foreach (Product product in products)
{
tasks.Add(Task.Run( async () => product.ImageUri = await _imageClient.GetImageUriAsync(product.GetImagePath()) ));
}
await Task.WhenAll(tasks);
你甚至不需要最终的结果。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)