如何等待不同类型的任务

本文关键字:同类型 任务 等待 何等待 | 更新日期: 2023-09-27 18:24:54

我正在尝试异步完成四个任务,当它们全部完成时,将它们附加到一个对象并返回。

这是我的代码:

Task[] tasks = new Task[4];
tasks[0] = wtData.GetHFServiceData(wtTransfreeeId);
tasks[1] = wtData.GetTLServicesData(wtTransfreeeId);
tasks[2] = wtData.GetHMAServiceData(wtTransfreeeId);
tasks[3] = wtData.GetHSServiceData(wtTransfreeeId);
Task.WaitAll(tasks);

问题是,由于Task[]没有Result方法,我必须定义一个类似Task<MyType>[]的类型。但是,上面四个任务中的每一个都返回不同的类型。

如何等到所有任务都完成后再将它们添加到组合对象并返回?

如何等待不同类型的任务

在将它们放入数组之前,必须将它们存储为Task<T>

Task<YourType1> task1 = wtData.GetHFServiceData(wtTransfreeeId);
Task<YourType2> task2 = wtData.GetTLServicesData(wtTransfreeeId);
...
Task[] tasks = new Task[]{task1, task2, ...};
Task.WaitAll(tasks);
var result1 = task1.Result;//Access the individual task's Result here
...

避免阻塞等待,如果您在.Net 4.5中,请考虑将Task.WhenAllawait一起使用。否则CCD_ 6是另一个选项。