多个异步/等待链接

时间:2014-08-07 12:01:33

标签: c# async-await

如何在C#中进行多个异步/等待链接? 例如,启动一些HTTP请求,然后不等待所有这些请求,但在每次完成后启动新请求

3 个答案:

答案 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,并用于返回结果。