Я пытаюсь запустить два списка асинхронных задач (с разными типами возврата) одновременно и не могу понять, как это сделать.
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.
}
}
Приведенный выше код не работает, потому что вы не можете объединить различные типы задач. Но это те типы, которые возвращаются из веб-службы.
Мне нужно запустить их одновременно, так как получение кошек занимает около 3 секунд, как и получение собак. В итоге я жду в общей сложности 6 секунд, так как они происходят одна за другой.
Любое понимание того, как я могу запустить оба списка задач одновременно?