Skip to main content

Async Parallel


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