簡體   English   中英

如何等待各種類型的任務?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM