Program
using System;
using System.Threading;
namespace DelegatesAndEvents
{
class EventExample02
{
delegate void MyDelFillorDrain();
event MyDelFillorDrain MyEvent;
public void
FillTheTank()
{
Console.WriteLine("Water Level increasing");
for(int
i=1000;i<=5000;i=i+1000)
{
Console.WriteLine(i + " Litres");
Thread.Sleep(500);
if (i == 5000)
{
this.MyEvent = new MyDelFillorDrain(DrainTheTank);
Console.WriteLine("Open valve to distribute");
}
}
}
public void
DrainTheTank()
{
Console.WriteLine("Water Level decreasing");
for (int i =
5000; i >= 0; i = i - 1000)
{
Console.WriteLine(i + " Litres");
Thread.Sleep(500);
if(i==0)
{
this.MyEvent = new MyDelFillorDrain(FillTheTank);
Console.WriteLine("Start motor to fill water");
}
}
}
static void Main(string[] args)
{
Console.WriteLine("Water tank model");
EventExample02 obj1 = new EventExample02();
obj1.MyEvent = new MyDelFillorDrain(obj1.FillTheTank);
int Operations = 0;
while (Operations < 4)
{
Operations++;
obj1.MyEvent();
}
Console.ReadKey();
}
}
}
Output
Water tank model
Water Level increasing
1000 Litres
2000 Litres
3000 Litres
4000 Litres
5000 Litres
Open valve to distribute
Water Level decreasing
5000 Litres
4000 Litres
3000 Litres
2000 Litres
1000 Litres
0Litres
Start motor to fill water
Water Level increasing
1000 Litres
2000 Litres
3000 Litres
4000 Litres
5000 Litres
Open valve to distribute
Water Level decreasing
5000 Litres
4000 Litres
3000 Litres
2000 Litres
1000 Litres
0Litres
Start motor to fill water
No comments:
Post a Comment