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