Ejecutar varias tareas a la vez con Task.WhenAll en C#
En esta lección vas a ejecutar a la vez dos tareas asíncronas independientes y a esperar a que terminen las dos con Task.WhenAll.
Introducción
Cuando varias tareas asíncronas no dependen unas de otras, por ejemplo llamar a dos APIs distintas, no hace falta esperar a que termine una para empezar la siguiente. Task.WhenAll las ejecuta a la vez y solo termina cuando todas han acabado.
Las dos llamadas Fetch(20) y Fetch(22) empiezan de inmediato, así que sus esperas transcurren en paralelo y no una detrás de otra. Task.WhenAll devuelve un arreglo con los resultados en el orden de las tareas, y su suma es 42.
Ejemplo de C# ejecutable
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]);
}
}
42Practica con el depurador
Practica con un reto
Usa lo que cubre esta lección para resolver un problema real. Cada reto se ejecuta en el navegador, con pruebas al instante y una revisión de IA.
Todos los retos