15

Capisco da here che l'ordine di esecuzione dell'attività per Task.Whenall non è deterministico ma non riesco a trovare alcuna informazione sull'ordine dei risultati.Task.WhenAll result ordering

La raccolta dei risultati contiene i risultati nell'ordine in cui le attività in cui è ordinato l'input oi risultati possono essere in qualsiasi ordine?

Dalle prove che ho fatto, sembra mantenere l'ordine ma ho bisogno di una conferma.

+0

potresti inserire un po 'di codice per darti la risposta corretta –

risposta

50

Da MSDN:

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

Questa è l'unica di sovraccarico dei quattro che contiene questa dichiarazione:

Se nessuno dei compiti in errore e nessuno dei compiti sono stati annullati, il risultante l'attività terminerà nello stato RanToCompletion. Il risultato di l'attività restituita sarà impostata su una matrice contenente tutti i risultati delle attività fornite nello stesso ordine in cui sono stati forniti (ad esempio se l'array di attività di input conteneva t1, t2, t3, l'output attività Il risultato restituirà un TResult [] dove arr [0] == t1.Result, arr 1 == t2.Result e arr [2] == t3.Result).

+3

Questo dovrebbe essere contrassegnato come la risposta corretta. – Will

+0

@Sì Sì, è un peccato che così tanti autori di domande non prendano il tempo per contrassegnare la risposta come corretta ... – Robba

+0

Giusto per essere chiari per le persone che leggono questo come me, il sovraccarico 'Task.WhenAll Method (Task []) 'contiene anche la stessa dichiarazione. –