“Accessing the property’s get accessor blocks the calling thread until the asynchronous operation is complete; it is equivalent to calling the Wait method.”
From: https://docs.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1.result?view=net-5.0
The slow one.
private async Task<int> GetIt()
{
await Task.Delay(2000);
var myInt = new Random().Next(0, 5);
return myInt;
}
var tasks = new List<Task<int>>();
for (var i = 0; i < 3; i++)
{
var task=GetIt();
tasks.Add(task);
Console.WriteLine(task.Result);
}
await Task.WhenAll(tasks);
The fast one
private async Task<int> GetIt()
{
await Task.Delay(2000);
var myInt = new Random().Next(0, 5);
return myInt;
}
var tasks = new List<Task<int>>();
for (var i = 0; i < 3; i++)
{
var task=GetIt();
tasks.Add(task);
}
await Task.WhenAll(tasks);
foreach(var t in tasks)
{
Console.WriteLine(t.Result);
}