gpt4 book ai didi

.net - 如何限制.Net中的异步功能?

转载 作者:行者123 更新时间:2023-12-04 04:18:16 24 4
gpt4 key购买 nike

我在.Net中使用async-await。如何限制并发异步调用的数量?

最佳答案

一种相对简单的方法是(滥用)TPL Dataflow。就像是:

public IEnumerable<TOutput> AsyncThrottle<TInput, TOutput>(
IEnumerable<TInput> inputs, Func<TInput, Task<TOutput>> asyncFunction,
int maxDegreeOfParallelism)
{
var outputs = new ConcurrentQueue<TOutput>();

var block = new ActionBlock<TInput>(
async x => outputs.Enqueue(await asyncFunction(x)),
new ExecutionDataflowBlockOptions
{ MaxDgreeOfParallelism = maxDegreeOfParallelism });

foreach (var input in inputs)
block.Send(input);

block.Complete();
block.Completion.Wait();

return outputs.ToArray();
}

关于.net - 如何限制.Net中的异步功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12439392/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com