Я думал, что понял SemaphoreSlim, но думаю, что мне нужна помощь. Если я объявляю семафор с maxCount, равным 2, то я предполагал, что количество семафоров будет увеличиваться до 2 с каждым вызовом WaitAsync () в цикле, позволяя одновременно запускать до двух задач, но он выполняется толькопо одному, хотя я выпускаю Семафор в конце каждого задания. Может кто-нибудь пролить свет на то, почему этот код запускает одну задачу за раз?
class Program
{
static SemaphoreSlim _loopThrottle = new SemaphoreSlim(1, 2);
static async Task Main(string[] args)
{
for (int taskID = 1; taskID <= 10; taskID++)
{
await _loopThrottle.WaitAsync();
var t = SomeFunctionAsync(taskID);
}
Console.ReadLine();
}
private async static Task SomeFunctionAsync(int taskID)
{
await Task.Delay(1000);
Console.WriteLine(taskID);
_loopThrottle.Release();
}
}