using System.Threading.Tasks;
public static async Task Main(string[] args)
Console.WriteLine("before");
Thread.Sleep(TimeSpan.FromSeconds(5));
Console.WriteLine("Main");
Console.WriteLine("end");
private static async Task Foo(int taskNum)
private static Task Foo1(int taskNum)
private static async Task Foo1x(int taskNum)
Console.WriteLine($"{taskNum} start");
await Task.Delay(TimeSpan.FromSeconds(2));
Console.WriteLine($"{taskNum} middle");
await Task.Delay(TimeSpan.FromSeconds(3));
Console.WriteLine($"{taskNum} finish");