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