[英]How to wait for tasks of varying types?
我試圖異步完成四個任務,當它們全部完成時,將它們附加到一個對象並返回它。
這是我的代碼:
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.WhenAll
await
。 否則Task.Factory.ContinueWhenAll
是另一種選擇。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.