我有一个场景,我的应用程序中的不同代码可以调用以下方法
async Task downloadFile(string fileName)
{
await downloadService(fileName);
}
需要一种机制,我可以控制它可以发送的最大请求数。例如,在5个活动请求之后,我希望其余的排队等待,然后只有在我们从其中一个现有请求得到响应后才会启动。我还需要一个机制,我可以在我的代码中监听所有活动/排队的请求,如Task.WhenAll
我最感兴趣的是内置的.Net库。我知道TaskScheduler但似乎我自己实现了大部分的Enqueue / Dequeue内容。想知道是否存在更合适的图书馆。
答案 0 :(得分:5)
您可以按以下方式试用SemaphoreSlim课程:
SemaphoreSlim semaphore = new SemaphoreSlim(5, 5);
async Task downloadFile(string fileName)
{
await semaphore.WaitAsync();
try
{
await downloadService(fileName);
}
finally
{
semaphore.Release();
}
}