15

Je comprends de here que l'ordre d'exécution de la tâche pour Task.Whenall n'est pas déterministe mais je ne trouve aucune information sur l'ordre des résultats.Task.WhenAll commande

La collection de résultats contiendra-t-elle les résultats dans l'ordre dans lequel les tâches commandées dans l'entrée ou les résultats peuvent être dans n'importe quel ordre? D'après les tests que j'ai faits, il semble garder la commande mais j'ai besoin d'une confirmation.

+0

pouvez-vous s'il vous plaît mettre un peu de code afin de vous donner la bonne réponse –

Répondre

50

De MSDN:

Task.WhenAll<TResult>(IEnumerable<Task<TResult>>) 

Ceci est la seule surcharge des quatre qui contient cette déclaration:

Si aucune des tâches en défaut et aucune des tâches ont été annulées, le résultant La tâche se terminera dans l'état RanToCompletion. Le résultat de la tâche retournée sera définie sur un tableau contenant tous les résultats des tâches fournies dans le même ordre que ceux fournis (par exemple, si le tableau de tâches d'entrée contenait t1, t2, t3, la sortie Le résultat de la tâche retournera un TResult [] où arr [0] == t1.Result, arr 1 == t2.Result, et arr [2] == t3.Result).

+3

Cela devrait être marqué comme la bonne réponse. – Will

+0

@Will Oui, il est dommage que tant d'auteurs de questions ne prennent pas le temps de marquer la réponse comme correcte ... – Robba

+0

Juste pour être clair pour les gens qui lisent comme moi, la surcharge 'Task.WhenAll Méthode (Tâche []) 'contient également la même déclaration. –