Skip to content

Instantly share code, notes, and snippets.

@scattered-code
Created January 6, 2020 13:21
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save scattered-code/4536a7355741b8f0be12bac39aece279 to your computer and use it in GitHub Desktop.
Save scattered-code/4536a7355741b8f0be12bac39aece279 to your computer and use it in GitHub Desktop.
public static Task AsyncParallelForEach<T>(this IEnumerable<T> source, Func<T, Task> body, int maxDegreeOfParallelism = DataflowBlockOptions.Unbounded, TaskScheduler scheduler = null)
{
var options = new ExecutionDataflowBlockOptions
{
MaxDegreeOfParallelism = maxDegreeOfParallelism
};
if (scheduler != null)
options.TaskScheduler = scheduler;
var block = new ActionBlock<T>(body, options);
foreach (var item in source)
block.Post(item);
block.Complete();
return block.Completion;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment