Example #1
0
        private static CookedPasta CookPasta(BoilingWater boilingWater)
        {
            Console.WriteLine("Starting to cook the pasta...");
            Thread.Sleep(5000);
            CookedPasta cookedPasta = new CookedPasta(boilingWater);

            Console.WriteLine("The pasta is now cooked.");
            return(cookedPasta);
        }
Example #2
0
        public static void SingleSynchronousThread()
        {
            BoilingWater         boilingWater         = BoilWaterAsync().Result;
            CookedPasta          cookedPasta          = CookPasta(boilingWater);
            DrainedCookedPasta   drainedCookedPasta   = DrainPasta(cookedPasta);
            TomatoPasta          tomatoPasta          = AddSauceToPasta(drainedCookedPasta);
            GratedCheese         gratedCheese         = GrateCheese();
            CheeseAndTomatoPasta cheeseAndTomatoPasta = AddCheeseToPasta(gratedCheese, tomatoPasta);
            PreHeatedOven        preHeatedOven        = PreHeatOvenAsync().Result;
            FinishedPastaDish    finishedPastaDish    = BakePastaAsync(cheeseAndTomatoPasta, preHeatedOven).Result;
            Dessert dessert = PrepareDessert();

            EatMeal(finishedPastaDish, dessert);
        }
Example #3
0
        public static void MultipleSynchronousThreads()
        {
            Task <PreHeatedOven> preHeatOvenTask      = Task.Run(PreHeatOvenAsync);
            Task <Dessert>       prepareDessertTask   = Task.Run(() => PrepareDessert());
            Task <GratedCheese>  grateCheeseTask      = Task.Run(() => GrateCheese());
            BoilingWater         boilingWater         = BoilWaterAsync().Result;
            CookedPasta          cookedPasta          = CookPasta(boilingWater);
            DrainedCookedPasta   drainedCookedPasta   = DrainPasta(cookedPasta);
            TomatoPasta          tomatoPasta          = AddSauceToPasta(drainedCookedPasta);
            GratedCheese         gratedCheese         = grateCheeseTask.Result;
            CheeseAndTomatoPasta cheeseAndTomatoPasta = AddCheeseToPasta(gratedCheese, tomatoPasta);
            PreHeatedOven        preHeatedOven        = preHeatOvenTask.Result;
            FinishedPastaDish    finishedPastaDish    = BakePastaAsync(cheeseAndTomatoPasta, preHeatedOven).Result;
            Dessert dessert = prepareDessertTask.Result;

            EatMeal(finishedPastaDish, dessert);
        }
Example #4
0
        public static async Task SingleAsynchronousThread()
        {
            Task <BoilingWater>      boilWaterTask        = BoilWaterAsync();
            Task <PreHeatedOven>     preHeatOvenTask      = PreHeatOvenAsync();
            GratedCheese             gratedCheese         = GrateCheese();
            BoilingWater             boilingWater         = await boilWaterTask;
            CookedPasta              cookedPasta          = CookPasta(boilingWater);
            DrainedCookedPasta       drainedCookedPasta   = DrainPasta(cookedPasta);
            TomatoPasta              tomatoPasta          = AddSauceToPasta(drainedCookedPasta);
            CheeseAndTomatoPasta     cheeseAndTomatoPasta = AddCheeseToPasta(gratedCheese, tomatoPasta);
            PreHeatedOven            preHeatedOven        = await preHeatOvenTask;
            Task <FinishedPastaDish> bakePastaTask        = BakePastaAsync(cheeseAndTomatoPasta, preHeatedOven);
            Dessert           dessert           = PrepareDessert();
            FinishedPastaDish finishedPastaDish = await bakePastaTask;

            EatMeal(finishedPastaDish, dessert);
        }
Example #5
0
        public static async Task MultipleAsynchronousThreads()
        {
            Task <Dessert>      prepareDessertTask = Task.Run(() => PrepareDessert());
            Task <GratedCheese> grateCheeseTask    = Task.Run(() => GrateCheese());

            Task <BoilingWater>  boilWaterTask        = BoilWaterAsync();
            Task <PreHeatedOven> preHeatOvenTask      = PreHeatOvenAsync();
            BoilingWater         boilingWater         = await boilWaterTask;
            CookedPasta          cookedPasta          = CookPasta(boilingWater);
            DrainedCookedPasta   drainedCookedPasta   = DrainPasta(cookedPasta);
            TomatoPasta          tomatoPasta          = AddSauceToPasta(drainedCookedPasta);
            GratedCheese         gratedCheese         = await grateCheeseTask;
            CheeseAndTomatoPasta cheeseAndTomatoPasta = AddCheeseToPasta(gratedCheese, tomatoPasta);
            PreHeatedOven        preHeatedOven        = await preHeatOvenTask;
            FinishedPastaDish    finishedPastaDish    = await BakePastaAsync(cheeseAndTomatoPasta, preHeatedOven);

            Dessert dessert = await prepareDessertTask;

            EatMeal(finishedPastaDish, dessert);
        }
Example #6
0
 public CookedPasta(BoilingWater boilingWater)
 {
 }