Added ForEachAsync

This commit is contained in:
Jaex 2021-11-24 07:37:17 +03:00
parent 1332a96ad0
commit 0d7200f30f

View file

@ -1665,5 +1665,26 @@ public static string CreateChecksumFile(string filePath)
return null;
}
public static Task ForEachAsync<T>(IEnumerable<T> inputEnumerable, Func<T, Task> asyncProcessor, int maxDegreeOfParallelism)
{
SemaphoreSlim throttler = new SemaphoreSlim(maxDegreeOfParallelism, maxDegreeOfParallelism);
IEnumerable<Task> tasks = inputEnumerable.Select(async input =>
{
await throttler.WaitAsync();
try
{
await asyncProcessor(input);
}
finally
{
throttler.Release();
}
});
return Task.WhenAll(tasks);
}
}
}