Ejercicios de C#

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

C#
Ejecutar código →
Program.cs
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]);
    }
}
Resultado de la ejecución
42

Practica con el depurador

Pon un punto de interrupción en una asignación o condición importante, pulsa Debug y revisa los valores locales antes de pasar a la siguiente línea.

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