Eseguire più operazioni insieme con Task.WhenAll in C#
In questa lezione eseguirai insieme due operazioni asincrone indipendenti e attenderai che finiscano entrambe con Task.WhenAll.
Introduzione
Quando ci sono più operazioni asincrone che non dipendono l'una dall'altra, come chiamare due API diverse, non serve aspettare che una finisca per avviare la successiva. Task.WhenAll le esegue insieme e termina solo quando sono finite tutte.
Le due chiamate Fetch(20) e Fetch(22) partono subito, quindi i loro tempi di attesa si svolgono in parallelo invece che uno dopo l'altro. Task.WhenAll restituisce un array con i risultati nello stesso ordine delle operazioni, e la loro somma è 42.
Esempio C# eseguibile
using System;
using System.Threading.Tasks;
class Program
{
static async Task<int> Fetch(int value) { await Task.Delay(20); return value; }
static async Task Main()
{
int[] results = await Task.WhenAll(Fetch(20), Fetch(22));
Console.WriteLine(results[0] + results[1]);
}
}
42Esercitati con il debugger
Esercitati con una sfida
Usa ciò che questa lezione spiega per risolvere un problema reale. Ogni sfida gira nel browser, con test immediati e una revisione dell'IA.
Tutte le sfide