CSharpProjekt/Async_Await/Ex6.cs

28 lines
908 B
C#

using System;
using System.Collections.Generic;
using System.Threading.Tasks;
public class Ex6
{
public static async Task Run()
{
/* Example for Task Coordination using Task.WhenAny() */
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);
}
List<Task<(int index, int waitingTime)>> taskList = new();
for (int i = 1; i < 10; i++)
{
var delayedTask = randomDelay(i);
taskList.Add(delayedTask);
}
var fastestTask = await Task.WhenAny(taskList);
Console.WriteLine($"The fastest task was Task {fastestTask.Result.index}. It took {fastestTask.Result.waitingTime} ms to complete.");
}
}