using System; using System.Threading; using System.Threading.Tasks; public class Test { public static void Main() { Log("Main KekAsync before"); Task.Run(() => KekAsync()); Log("Main KekAsync after"); Log("Main LilAsync before"); LilAsync(); Log("Main LilAsync after"); Thread.Sleep(1000); Log("Main DjigurdaAsync before"); DjigurdaAsync().Wait(); Log("Main DjigurdaAsync after"); } private static void Log(string message) { Console.WriteLine("{0}: {1}", Thread.CurrentThread.ManagedThreadId, message); } private static Task KekAsync() { Log("KekAsync before"); Thread.Sleep(1000); Log("KekAsync after"); return Task.FromResult(0); } private static Task LilAsync() { Log("LilAsync before"); Thread.Sleep(1000); Log("LilAsync after"); return Task.FromResult(0); } private static Task DjigurdaAsync() { Log("DjigurdaAsync before"); Thread.Sleep(1000); Log("DjigurdaAsync after"); return Task.FromResult(0); } }