using System.Threading.Tasks;
public static async Task Main()
Print("Before Task.Run");
Task task = Task.Run(() => DoWorkAsync());
Print("Before Task.WhenAll");
Task whenAllTask = Task.WhenAll(task);
Print("Before await whenAllTask");
Print("After await whenAllTask");
static async Task DoWorkAsync()
Print("--Starting work");
Print("--Finishing work");
static void Print(object value)
Console.WriteLine($@"{DateTime.Now:HH:mm:ss.fff} [{Thread.CurrentThread
.ManagedThreadId}] > {value}");