using System; using System.Threading.Tasks; public class Ex5 { public static async Task Run() { /* Example for Task Coordination using Task.WhenAll() */ Random random = new(); async Task<(int index, int waitingTime)> randomDelay(int index) { var waitingTime = random.Next(500, 2000); await Task.Delay(waitingTime); return (index, waitingTime); } var delayTask1 = randomDelay(1); var delayTask2 = randomDelay(2); var delayTask3 = randomDelay(3); await Task.WhenAll(delayTask1, delayTask2, delayTask3); Console.WriteLine($"Task {delayTask1.Result.index} had to wait for {delayTask1.Result.waitingTime} ms"); Console.WriteLine($"Task {delayTask2.Result.index} had to wait for {delayTask2.Result.waitingTime} ms"); Console.WriteLine($"Task {delayTask3.Result.index} had to wait for {delayTask3.Result.waitingTime} ms"); } }