如何同时运行两个异步函数

4

我需要知道如何同时运行两个异步函数,可以参考以下代码:

public async Task<ResponseDataModel> DataDownload()
{
  ResponseDataModel responseModel1 = await RequestManager.CreateRequest(postData);
  ResponseDataModel responseModel2 = await RequestManager.CreateRequest(postData);

  //Wait here till both tasks complete. then return the result.

}

这里我有两个CreateRequest()方法,它们按顺序运行。我想要并行运行这两个函数,并在两个函数结束后返回结果。如何实现?


返回哪个结果?你有两个结果。 - Ant P
1
你想要合并结果吗?还是同时返回两个? - i3arnon
让我们说第一个结果。 - SurenSaluka
@SurenSaluka 然后看看我的更新。 - i3arnon
1个回答

8

如果你只需要2个操作中的第一个结果,你可以通过调用这两个方法,并使用`Task.WhenAny`同时等待两个任务来实现:

public async Task<ResponseDataModel> DataDownloadAsync()
{
    var completedTask = await Task.WhenAny(
        RequestManager.CreateRequest(postData), 
        RequestManager.CreateRequest(postData));
    return await completedTask;
}

Task.WhenAny 方法创建的任务,将在所有提供的任务中的第一个任务完成时完成。它返回已完成的那个任务,以便您可以获取其结果。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接