如何在C#中进行多个异步/等待链接? 例如,启动一些HTTP请求,然后不等待所有这些请求,但在每次完成后启动新请求?
答案 0 :(得分:10)
最简单的方法是编写async
方法:
async Task DownloadAndFollowupAsync(...)
{
await DownloadAsync();
await FollowupAsync();
}
然后您可以使用await Task.WhenAll
:
await Task.WhenAll(DownloadAndFollowupAsync(...),
DownloadAndFollowupAsync(...));
答案 1 :(得分:2)
如果要对具有有限并行度的项集合执行某些async
操作,那么最简单的方法是使用来自TPL Dataflow的ActionBlock
,因为它支持{{1委托(与TPL中的大多数其他并行结构不同,如async
)。
Parallel.ForEach()
答案 2 :(得分:1)
您可以为此目的使用ContinueWith扩展方法或the extension that takes a Func,并用于返回结果。