Skip to main content

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));
}