我有ASP.NET应用程序需要向不同的端点发送多个HTTP请求,并合并来自所有端点的响应以供后续处理。
我目前的解决方案是这样的:
创建请求列表以放置所有请求
var requests = new List<Request>() {...}
为每个请求创建任务
var tasks = requests.ToDictionary(
request => request, request => function(request, cts.Token));
委托功能只是发送和接收每个请求的响应:
async Task<Response> HandleRequest(Request request, CancellationToken ct)
{
...
await httpClient.PostAsync(...)
...
}
等待所有任务完成
await Task.WhenAll(tasks.Values);
这种方法有效,但似乎并不是真正的并行,我想知道是否有更好的解决方案可以给我更好的并行性,从而产生更好的性能?