用了一个洗衣机的例子来说明这个问题,一个简单的洗衣机有设定时间,时间到了之后就开始提示。
public class Washer
{
private string name;
private int time;
public Washer(string name, int time)
{
this.name = name;
this.time = time;
}
public class WasherEventArgs : EventArgs
{
public readonly int times;
public WasherEventArgs(int times)
{
this.times = times;
}
}
public delegate void WashEventHandler(Object sender, WasherEventArgs e);
public event WashEventHandler Washed;
public virtual void OnWashed(WasherEventArgs e)
{
if (Washed != null)
{
this.Washed(this, e);
}
}
public void Start()
{
for (int i=1;i<=time;i++)
{
System.Threading.Thread.Sleep(100);
}
for (int j = 1; j <= 3; j++)
{
this.OnWashed(new WasherEventArgs(j));
}
}
}
public class Washer
{
private string name;
private int time;
public Washer(string name, int time)
{
this.name = name;
this.time = time;
}
public class WasherEventArgs : EventArgs
{
public readonly int times;
public WasherEventArgs(int times)
{
this.times = times;
}
}
public delegate void WashEventHandler(Object sender, WasherEventArgs e);
public event WashEventHandler Washed;
public virtual void OnWashed(WasherEventArgs e)
{
if (Washed != null)
{
this.Washed(this, e);
}
}
public void Start()
{
for (int i=1;i<=time;i++)
{
System.Threading.Thread.Sleep(100);
}
for (int j = 1; j <= 3; j++)
{
this.OnWashed(new WasherEventArgs(j));
}
}
}
public
class
Alarm
{
public Alarm()
{
}
public void MarkAlert(Object sender, Washer.WasherEventArgs e)
{
Console.WriteLine("Alert "+ e.times+" times");
}
}
{
public Alarm()
{
}
public void MarkAlert(Object sender, Washer.WasherEventArgs e)
{
Console.WriteLine("Alert "+ e.times+" times");
}
}
Washer w
=
new
Washer(
"
Lover Washer
"
,
20
);
w.Washed += ( new Alarm()).MarkAlert;
w.Start();
w.Washed += ( new Alarm()).MarkAlert;
w.Start();