class Coffee
{
private string BoilWater;
private string CoffeePowder;
private string Sugar;
public bool IsCoffeeReady = false;
public Coffee(string boilWater, string
coffeePowder, string sugar)
{
Console.WriteLine("Start
Coffee making");
BoilWater = boilWater;
Console.WriteLine("Start
boiling water");
Thread.Sleep(1000);
Console.WriteLine("water
boiled add coffee");
CoffeePowder = coffeePowder;
Console.WriteLine("Ster and
boild");
Thread.Sleep(500);
Console.WriteLine("Add
sugar");
Sugar = sugar;
Console.WriteLine("coffee
ready");
IsCoffeeReady = true;
}
public void PourCoffee()
{
if(IsCoffeeReady)
Console.WriteLine("Coffee
Ready for pour");
}
}
class Egg
{
private string boilWater;
public Egg(int eggcount)
{
//add egg into water and start
boiling water
Console.WriteLine($"put
{eggcount} egg into the water");
Console.WriteLine("water is
boiling now");
Thread.Sleep(1500);
Console.WriteLine("egg are
boiled");
Console.WriteLine("pealing the
egg");
Thread.Sleep(1000);
Console.WriteLine("Egg is
ready");
}
}
class Toast
{
private int Breadcount;
public Toast(int breadcount)
{
Breadcount = breadcount;
Console.WriteLine($"Put
{Breadcount} bread slice into toster");
Console.WriteLine("Tostes are
making");
Thread.Sleep(1500);
Console.WriteLine("Toste are
ready ");
}
public void ApplyButter(Toast tos)
{
Console.WriteLine($"Appling
butter on {tos.Breadcount} tostes");
Thread.Sleep(1000);
Console.WriteLine($"{tos.Breadcount} tostes are ready with
butter");
}
public void ApplyJam(Toast tos)
{
Console.WriteLine($"Appling
Jam on {tos.Breadcount} toastes");
Thread.Sleep(1000);
Console.WriteLine($"{tos.Breadcount} tostes are ready with
jam");
}
}
class Program
{
static void Main(string[] args)
{
Coffee cup =new
Coffee("Water", "Coffee", "Sugar");
Console.WriteLine("coffee is
ready");
Egg eggs = new Egg(2);
Console.WriteLine("eggs are
ready");
Toast toast = new Toast(2);
toast.ApplyButter(toast);
toast.ApplyJam(toast);
Console.WriteLine("toast is
ready");
Console.WriteLine("Breakfast
is ready!");
Console.Read();
}
}
public class Coffee
{
public bool IsCoffeeReady = false;
public Coffee(int cups)
{
Console.WriteLine("Coffee
:Start Coffee making");
Console.WriteLine("Coffee
:Start boiling water for coffee......");
Thread.Sleep(10000);
Console.WriteLine("Coffee
:water boiled add coffee powder ");
Console.WriteLine("Coffee
:Ster and boil");
Thread.Sleep(500);
Console.WriteLine("Coffee :Add
sugar");
Thread.Sleep(500);
Console.WriteLine($"Coffee
:{cups} cups coffee ready");
IsCoffeeReady = true;
}
public void PourCoffee()
{
Console.WriteLine("Coffee :
Coffee Ready for pour");
}
}
class Egg
{
public Egg(int eggcount)
{
Console.WriteLine($"Egg: put
{eggcount} egg into the water");
Console.WriteLine("Egg: water
is boiling .....");
Thread.Sleep(1500);
Console.WriteLine("Egg: egg
are boiled");
Console.WriteLine("Egg:
pealing the egg");
Thread.Sleep(1000);
Console.WriteLine("Egg: Egg is
ready");
}
}
class Toast
{
private int Breadcount;
public Toast(int breadcount)
{
Breadcount = breadcount;
Console.WriteLine($"Toast :
Put {Breadcount} bread slice into toaster");
Console.WriteLine("Toast :
bread are processing .....");
Thread.Sleep(15000);
Console.WriteLine("Toast
:Toste are ready ");
}
public void ApplyButter(Toast tos)
{
Console.WriteLine($"Butter On
Toast :Appling butter on {tos.Breadcount} tostes.....");
Thread.Sleep(12000);
Console.WriteLine($"Butter On
Toast :{tos.Breadcount} tostes are ready with butter");
}
public void ApplyJam(Toast tos)
{
Console.WriteLine($"Jam on
Toast : Appling Jam on {tos.Breadcount} toastes......");
Thread.Sleep(100);
Console.WriteLine($"Jam on
Toast : {tos.Breadcount} tostes are ready with jam");
}
}
class Program
{
public static int MakeCoffee()
{
int cup = 2;
Coffee coffee = new Coffee(cup);
coffee.PourCoffee();
return cup;
}
public static int MakeEggs()
{
int numberofeggs = 2;
Egg egg = new Egg(numberofeggs);
return numberofeggs;
}
public static int MakeToast()
{
int breadcount = 2;
Toast toast = new
Toast(breadcount);
toast.ApplyButter(toast);
toast.ApplyJam(toast);
return breadcount;
}
//static async Task<Toast>
MakeToastAsync()
//{
//
int breadcount = 2;
//
Toast toast = new Toast(breadcount);
//
toast.ApplyButter(toast);
//
toast.ApplyJam(toast);
//
return toast;
//}
public static async void
CallTaskmethods()
{
Console.WriteLine("## Group
Task Asynchonously ##");
Task<int> coffeeTask = new
Task<int>(MakeCoffee);
coffeeTask.Start();
//Console.WriteLine("Start
coffee making");
//int counts = await coffeeTask;
//Console.WriteLine("Coffee
task completed");
//Console.WriteLine();
Task<int> eggTask = new
Task<int>(MakeEggs);
eggTask.Start();
//Console.WriteLine("Egg task
Start");
//counts = await eggTask;
//Console.WriteLine("Egg task
completed");
//Console.WriteLine();
Task<int> toastTask = new
Task<int>(MakeToast);
toastTask.Start();
//var toastTask = MakeToastAsync();
Console.WriteLine();
var alltask = new List<Task>
{ coffeeTask, eggTask, toastTask };
while (alltask.Any())
{
Task finished = await
Task.WhenAny(alltask);
if (finished == coffeeTask)
{
Console.WriteLine("#### Coffee Task Completed");
alltask.Remove(coffeeTask);
var coffe = await
coffeeTask;
}
else if (finished == eggTask)
{
Console.WriteLine("#### Egg Task Completed");
alltask.Remove(eggTask);
var eggs = await
eggTask;
}
else if (finished == toastTask)
{
Console.WriteLine("#### Toast Task Completed");
alltask.Remove(toastTask);
var toasts = await
toastTask;
}
else
alltask.Remove(finished);
}
Console.WriteLine("####Break-Fast is ready ");
}
static void Main(string[] args)
{
CallTaskmethods();
Console.Read();
}
}