28 lines
995 B
C#
28 lines
995 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");
|
|
}
|
|
}
|