如何等待不同类型的任务数组?

5
我有一个看起来很简单的问题,但是我似乎找不到答案。
假设我有几个不同类型任务的数组。
Task<Dog>[] dogTasks = GetDogTasks();
Task<Cat>[] catTasks = GetCatTasks();
Task<Fish>[] fishTasks = GetFishTasks();

这些任务中,最好的WaitAll()方法是什么?

@PatrickHofman 我在尝试等待每个值时,遇到了错误 The best overloaded method match for 'System.Threading.Tasks.Task.WaitAll(params System.Threading.Tasks.Task[])' has some invalid arguments - Argument 1: cannot convert from 'System.Threading.Tasks.Task<object>[]' to 'System.Threading.Tasks.Task' - Phil Pill
抱歉,我漏掉了它是一个数组。请查看重复的内容,了解如何构建一个包含所有任务的新数组。 - Patrick Hofman
没关系。我已经尝试了另一个解决方案 - 它不能处理不同类型的情况。我的问题与其他问题不重复。 - Phil Pill
1个回答

5

WaitAll 应该能解决您的问题。您有一些任务数组,所以您应该从中创建一个数组:

var tasks = new List<Task>();
tasks.AddRange(dogTasks);
tasks.AddRange(catTasks);
tasks.AddRange(fishTasks);
Task.WaitAll(tasks.ToArray());

更新。从它们创建一个数组。 - Sergii Zhevzhyk
太棒了!谢谢 @SergiiZhevzhyk - Phil Pill

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