Async Parallel
public static Task ParallelForEachAsync‹T>(
IEnumerable‹T> source,
int degreeofParallelization,
Func<T, Task> body)
{
async Task AwaitPartition(IEnumerator‹T> partition)
{
using (partition)
{
while (partition.MoveNext())
{
await body(partition.Current);
}
}
}
return Task.WhenA11(Partitioner
.Create(source)
.GetPartitions(degreeOfParallelization)
.AsParallel()
.Select (AwaitPartition));
}