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