using System.Threading.Tasks;
private static Random _random = new Random();
public static void Main()
private static void RunAllProcesses()
var rutting = Task.Run(() =>
}).ContinueWith((task) =>
SomethingThatDependsOnRutting();
var parallel = Task.Run(() =>
SomethingThatCanRunInParallel();
private static void RuttingProcess()
Console.WriteLine("starting rutting process");
Console.WriteLine("finished rutting");
private static void SomethingThatCanRunInParallel()
Console.WriteLine("starting process that can run parallel with everything");
Console.WriteLine("finished process running in parallel with everything");
private static void SomethingThatDependsOnRutting()
Console.WriteLine("starting process depends on rutting");
Console.WriteLine("finished process dependent on rutting");
private static void shortWork()
Thread.Sleep(_random.Next(10,50));
private static void longWork()
Thread.Sleep(_random.Next(100,300));