如何使用 SemaphoreSlim 使用一组 3 调用异步方法列表

问题描述 投票:0回答:0

代码片段


    async Task<bool> Method1(string name,string email)
        {
            await Task.Delay(500);
             Console.WriteLine("Method 1" + name +""+email);;
            return true;
        }

我们将所有方法存储在列表中


    var tasks=new Func<Task>[]
            {
                ()=>Method1(name,email),
                ()=>Method2(name,email),
                ()=>Method3(name,email),
                ()=>Method4(name,email),
                ()=>Method5(name,email)
            }

我们必须使用 SemaphoreSlim(3) 异步将任务列表调用为 3 个 bunces 使用 SemaohoreSlim 调用任务的逻辑应该如何


    SemaphoreSlim semaphoreSlim=new SemaphoreSlim()
                tasks = tasks.Select(async x =>
                {
                    await semaphoreSlim.WaitAsync();
                    try
                    {
                        await x();
                    }
                    finally
                    {
                        semaphoreSlim.Release();
                    }
                }).ToList();

.net asp.net-core asynchronous async-await core
© www.soinside.com 2019 - 2024. All rights reserved.