mirror of
https://github.com/ShareX/ShareX.git
synced 2024-09-30 01:07:21 +13:00
Added ForEachAsync
This commit is contained in:
parent
1332a96ad0
commit
0d7200f30f
1 changed files with 21 additions and 0 deletions
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue