fork download
  1. using System;
  2. using System.Threading;
  3. using System.Threading.Tasks;
  4.  
  5. public class Test
  6. {
  7. public static void Main()
  8. {
  9. Log("Main KekAsync before");
  10. Task.Run(() => KekAsync());
  11. Log("Main KekAsync after");
  12.  
  13. Log("Main LilAsync before");
  14. LilAsync();
  15. Log("Main LilAsync after");
  16.  
  17. Thread.Sleep(1000);
  18.  
  19. Log("Main DjigurdaAsync before");
  20. DjigurdaAsync().Wait();
  21. Log("Main DjigurdaAsync after");
  22. }
  23.  
  24. private static void Log(string message)
  25. {
  26. Console.WriteLine("{0}: {1}", Thread.CurrentThread.ManagedThreadId, message);
  27. }
  28.  
  29. private static Task KekAsync()
  30. {
  31. Log("KekAsync before");
  32. Thread.Sleep(1000);
  33. Log("KekAsync after");
  34.  
  35. return Task.FromResult(0);
  36. }
  37.  
  38. private static Task LilAsync()
  39. {
  40. Log("LilAsync before");
  41. Thread.Sleep(1000);
  42. Log("LilAsync after");
  43.  
  44. return Task.FromResult(0);
  45. }
  46.  
  47. private static Task DjigurdaAsync()
  48. {
  49. Log("DjigurdaAsync before");
  50. Thread.Sleep(1000);
  51. Log("DjigurdaAsync after");
  52.  
  53. return Task.FromResult(0);
  54. }
  55. }
Success #stdin #stdout 0s 35056KB
stdin
Standard input is empty
stdout
1: Main KekAsync before
1: Main KekAsync after
1: Main LilAsync before
1: LilAsync before
4: KekAsync before
1: LilAsync after
1: Main LilAsync after
4: KekAsync after
1: Main DjigurdaAsync before
1: DjigurdaAsync before
1: DjigurdaAsync after
1: Main DjigurdaAsync after