using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace EventDemo
{
delegate void TemperatureChangedEventHandle(object sender, BoiledWaterEventArgs args);
class Program
{
static void Main(string[] args)
{
Heater ht = new Heater();
Monitor mt = new Monitor();
ht.TemperatureChanged += new TemperatureChangedEventHandle(Monitor.MonitorTemperature);
ht.PowerOn();
}
}
class Heater
{
public Heater()
{
Type = "强力热得快";
Area = "Made in China, Made by Trump";
}
private int _temperature;
public event TemperatureChangedEventHandle TemperatureChanged;
public string Type
{
get;
private set;
}
public string Area
{
get;
private set;
}
public bool IsOnPower
{
get;
private set;
}
public void PowerOff()
{
IsOnPower = false;
string s = new string('*', 50);
Console.WriteLine("我的电源被拔掉了,现在温度开始下降,Type:{0},Area:{1}", Type, Area);
Console.WriteLine(s);
System.Threading.Thread.Sleep(500);
while (_temperature > 0)
{
_temperature--;
System.Threading.Thread.Sleep(500);
TemperatureChanged(this, new BoiledWaterEventArgs { Temperature = _temperature,Type=this.Type,Area = this.Area});
}
}
public void PowerOn()
{
IsOnPower = true;
string s = new string('*', 50);
Console.WriteLine("我开始烧水了我的信息,Type:{0},Area:{1}", Type, Area);
System.Threading.Thread.Sleep(500);
Console.WriteLine(s);
BoilWater();
}
private void BoilWater()
{
while (IsOnPower && _temperature < 100)
{
_temperature++;
System.Threading.Thread.Sleep(200);
TemperatureChanged(this, new BoiledWaterEventArgs { Temperature = _temperature, Type = this.Type, Area = this.Area });
}
}
}
class Monitor
{
public static void MonitorTemperature(object sender, BoiledWaterEventArgs args)
{
Heater ht = sender as Heater;
int temperature = args.Temperature;
if (null == ht)
{
Console.WriteLine("这不是坑爹嘛,sender根本就不是热水器", temperature);
return;
}
if (temperature < 30)
{
Console.WriteLine("水温也太低了.....浑身鸡皮疙瘩,温度:{0}", temperature);
if (!ht.IsOnPower)
{
ht.PowerOn();
}
}
else if (temperature >= 30 && temperature < 50)
{
Console.WriteLine("水温刚好,很爽,温度:{0}", temperature);
}
else if (temperature >= 50 && temperature < 70)
{
Console.WriteLine("有点烫,尚可忍受,权当蒸桑拿了,温度:{0}", temperature);
}
else if (temperature >= 70)
{
Console.WriteLine("你想烫死哥啊,快关电源,温度:{0}", temperature);
if (ht.IsOnPower)
{
ht.PowerOff();
}
}
}
}
class BoiledWaterEventArgs : EventArgs
{
public int Temperature
{
get;
set;
}
public string Type
{
get;
set;
}
public string Area
{
get;
set;
}
}
}
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace EventDemo
{
delegate void TemperatureChangedEventHandle(object sender, BoiledWaterEventArgs args);
class Program
{
static void Main(string[] args)
{
Heater ht = new Heater();
Monitor mt = new Monitor();
ht.TemperatureChanged += new TemperatureChangedEventHandle(Monitor.MonitorTemperature);
ht.PowerOn();
}
}
class Heater
{
public Heater()
{
Type = "强力热得快";
Area = "Made in China, Made by Trump";
}
private int _temperature;
public event TemperatureChangedEventHandle TemperatureChanged;
public string Type
{
get;
private set;
}
public string Area
{
get;
private set;
}
public bool IsOnPower
{
get;
private set;
}
public void PowerOff()
{
IsOnPower = false;
string s = new string('*', 50);
Console.WriteLine("我的电源被拔掉了,现在温度开始下降,Type:{0},Area:{1}", Type, Area);
Console.WriteLine(s);
System.Threading.Thread.Sleep(500);
while (_temperature > 0)
{
_temperature--;
System.Threading.Thread.Sleep(500);
TemperatureChanged(this, new BoiledWaterEventArgs { Temperature = _temperature,Type=this.Type,Area = this.Area});
}
}
public void PowerOn()
{
IsOnPower = true;
string s = new string('*', 50);
Console.WriteLine("我开始烧水了我的信息,Type:{0},Area:{1}", Type, Area);
System.Threading.Thread.Sleep(500);
Console.WriteLine(s);
BoilWater();
}
private void BoilWater()
{
while (IsOnPower && _temperature < 100)
{
_temperature++;
System.Threading.Thread.Sleep(200);
TemperatureChanged(this, new BoiledWaterEventArgs { Temperature = _temperature, Type = this.Type, Area = this.Area });
}
}
}
class Monitor
{
public static void MonitorTemperature(object sender, BoiledWaterEventArgs args)
{
Heater ht = sender as Heater;
int temperature = args.Temperature;
if (null == ht)
{
Console.WriteLine("这不是坑爹嘛,sender根本就不是热水器", temperature);
return;
}
if (temperature < 30)
{
Console.WriteLine("水温也太低了.....浑身鸡皮疙瘩,温度:{0}", temperature);
if (!ht.IsOnPower)
{
ht.PowerOn();
}
}
else if (temperature >= 30 && temperature < 50)
{
Console.WriteLine("水温刚好,很爽,温度:{0}", temperature);
}
else if (temperature >= 50 && temperature < 70)
{
Console.WriteLine("有点烫,尚可忍受,权当蒸桑拿了,温度:{0}", temperature);
}
else if (temperature >= 70)
{
Console.WriteLine("你想烫死哥啊,快关电源,温度:{0}", temperature);
if (ht.IsOnPower)
{
ht.PowerOff();
}
}
}
}
class BoiledWaterEventArgs : EventArgs
{
public int Temperature
{
get;
set;
}
public string Type
{
get;
set;
}
public string Area
{
get;
set;
}
}
}