fork download
  1. using System;
  2. using System.Threading;
  3. using System.Threading.Tasks;
  4.  
  5. public class Program
  6. {
  7. public static void Main(string[] args)
  8. {
  9. Console.WriteLine("Main(): Started.");
  10.  
  11. Console.WriteLine("Main(): Calling ComplexMethod...");
  12. var complexMethodTask = Task.Run(() => ComplexMethod());
  13.  
  14. Console.WriteLine("Main(): Proceeding...");
  15. Thread.Sleep(3500);
  16.  
  17. Console.WriteLine("Main(): Waiting for ComplexMethod to finish...");
  18. complexMethodTask.Wait();
  19. Console.WriteLine("Main(): Finished.");
  20. }
  21.  
  22.  
  23. public static void ComplexMethod()
  24. {
  25. Console.WriteLine("ComplexMethod(): Started.");
  26.  
  27. Thread.Sleep(1000);
  28.  
  29. Console.WriteLine("ComplexMethod(): Calling WriteToFile method...");
  30. var writeTask1 = Task.Run(() => WriteToFile());
  31.  
  32. Console.WriteLine("ComplexMethod(): Doing some other things...");
  33. Thread.Sleep(2500);
  34.  
  35. Console.WriteLine("ComplexMethod(): Calling WriteToFile method...");
  36. var writeTask2 = Task.Run(() => WriteToFile());
  37.  
  38. Console.WriteLine("ComplexMethod(): Doing some other things...");
  39. Thread.Sleep(2500);
  40.  
  41. Console.WriteLine("ComplextMethod(): Waiting for both WriteToFile methods to finish...");
  42. Task.WaitAll(writeTask1, writeTask2);
  43. Console.WriteLine("ComplexMethod(): Finished.");
  44. }
  45.  
  46. public static void WriteToFile()
  47. {
  48. Console.WriteLine("WriteToFile(): Started.");
  49. Thread.Sleep(500);
  50.  
  51. Console.WriteLine("WriteToFile(): Writing to a file is taking a long time...");
  52. Thread.Sleep(4000);
  53.  
  54. Console.WriteLine("WriteToFile(): Finished.");
  55. }
  56. }
Success #stdin #stdout 0.02s 16980KB
stdin
Standard input is empty
stdout
Main(): Started.
Main(): Calling ComplexMethod...
Main(): Proceeding...
ComplexMethod(): Started.
ComplexMethod(): Calling WriteToFile method...
ComplexMethod(): Doing some other things...
WriteToFile(): Started.
WriteToFile(): Writing to a file is taking a long time...
Main(): Waiting for ComplexMethod to finish...
ComplexMethod(): Calling WriteToFile method...
ComplexMethod(): Doing some other things...
WriteToFile(): Started.
WriteToFile(): Writing to a file is taking a long time...
WriteToFile(): Finished.
ComplextMethod(): Waiting for both WriteToFile methods to finish...
WriteToFile(): Finished.
ComplexMethod(): Finished.
Main(): Finished.