【发布时间】:2019-08-20 18:08:43
【问题描述】:
我正在尝试同时运行两个异步任务列表(具有不同的返回类型),但不知道该怎么做。
public void LoadPets()
{
ServiceClient service = new ServiceClient();
List<string> catNames = ...;
List<string> dogNames = ...;
List<Task<Cat>> catTasks = catNames.Select(x => service.GetCatAsync(x.Name));
List<Task<Dog>> dogTasks = dogNames.Select(x => service.GetDogAsync(x.Name));
foreach(object pet in Task.WhenAll(catTasks.Concat(dogTasks)).Result)
{
// Cast object
// Do work with object.
}
}
上面的代码不起作用,因为您无法连接不同类型的任务。但这些是从 Web 服务返回的类型。
我需要同时运行它们,因为抓猫大约需要 3 秒,抓狗也需要 3 秒钟。所以我最终总共等待了 6 秒,因为它们一个接一个地发生。
关于如何同时运行这两个任务列表的任何见解?
【问题讨论】:
-
对
Cat和Dog使用通用的基本类型或接口。
标签: c# .net async-await