Le code suivant démarre T1Async()
, T2Async()
, T3Async()
, T4Async()
et attendre qu'ils soient tous terminés avant de consommer les résultats de ces appels. Cependant, le temps d'exécution de ces appels asynchrones peut être court ou très long de manière aléatoire.
Task<int> T1Async() { };
Task<string> T2Async() { };
Task<ClassX> T3Async() { };
Task<ClassY> T4Async() { };
var t1 = T1Async();
var t2 = T2Async();
var t3 = T3Async();
var t4 = T4Async();
var v1 = await t1;
var v2 = await t2;
var v3 = await t3;
var v4 = await t4;
// Or Task.WhenAll(new Task[] { t1, t2, t3, t4 });
UseV1(v1); // Want these calls be run asap
UseV2(v2);
UseV3(v3);
UseV4(v4);
UseAll(v1, v2, v3, v4); // Need all the result here
Comment consommer les résultats dès que l'appel est effectué et s'assurer que tous les résultats sont consommés ?