具有异步lambda的Parallel.ForEach等待所有迭代完成

问题描述 投票:0回答:1

最近,我看到了与Parallel.ForEach相关的几个SO线程与异步lambda混合在一起,但是所有提出的答案都是某种解决方法。

有什么办法可以写:

List<int> list = new List<int>[]();

Parallel.ForEach(arrayValues, async (item) =>
{
  var x = await LongRunningIoOperationAsync(item);
  list.Add(x);
});

我如何确保列表将包含每个迭代中使用lambda执行的所有迭代中的所有项目?

Parallel.ForEach通常如何与异步lambda一起使用,如果它等待命中,它将把其线程移交给下一个迭代?

我假设ParallelLoopResult IsCompleted字段不合适,因为在执行所有迭代时,无论其实际的lambda作业是否完成,它都将返回true?

c# task-parallel-library parallel.foreach
1个回答
3
投票

最近,我看到了与Parallel.ForEach相关的几个SO线程与异步lambda混合在一起,但是所有提出的答案都是某种解决方法。


2
投票

您不需要Parallel.For/ForEach,您只需await

© www.soinside.com 2019 - 2024. All rights reserved.