C#限制异步调用的数量

C# limit number of async calls

所以我有这个代码:

var tasks = Enumerable.Range(0, maxsize).Select(index => CallRequestsAsync(param1[index], param2[index]));
            Task.WaitAll(tasks.ToArray());

这段代码调用了一堆正在执行网络请求和其他工作的异步任务。我想限制一次最大活动 运行 任务的数量,假设在 time.Then 时有 50 个,如果一个完成工作,将调用一个新任务,所以基本上总会有 50 运行 一次异步任务,直到它完成我的列表。那么我怎样才能通过使用上面的格式来实现呢?索引是一个int,用于从外部变量中检索参数。

我认为你正在做类似下面的事情:

        var maxsize = 50;
        var tasks = new List<Task>();
        for (int index = 0; index < int.MaxValue; index++)
        {
            tasks.Add(CallRequestsAsync(param1[index], param2[index]));
            if (tasks.Count > maxsize)
                Task.WaitAny(tasks.ToArray());
            tasks.RemoveAll(x => x.IsCompleted);
        }