CSharpProjekt/Async_Await/Ex5.cs

28 lines
968 B
C#

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");
}
}