using System.Threading.Tasks;
using System.Collections.Generic;
public static async Task Main()
await new Program().Run();
var tasks = new List<Task>();
for(var counter = 1; counter < 5; counter++)
tasks.Add(PerformTask(counter, rand.Next(0, 2000)));
await Task.WhenAll(tasks);
public async Task PerformTask(int taskNumber, int timeout)
Console.WriteLine(string.Format("Starting task {0}", taskNumber));
System.Threading.Thread.Sleep(timeout);
Console.WriteLine(string.Format("Task {0} finished in {1} milliseconds", taskNumber, timeout));