首页 > 代码库 > C# 事件

C# 事件

要创建一个事件驱动的程序需要下面的步骤:

1.         声明关于事件的委托;

2.         声明事件;

3.         编写触发事件的函数;

4.         创建事件处理程序;

5.         注册事件处理程序;

6.         在适当的条件下触发事件。

现在我们来编写一个自定义事件的程序。主人养了一条忠实的看门狗,晚上主人睡觉的时候,狗负责看守房子。一旦有小偷进来,狗就发出一个Alarm事件,主人接到Alarm事件后就会采取相应的行动。假设小偷于2014

 1 using System; 2  3 //事件发送者 4 class Dog 5 { 6     //1.声明关于事件的委托; 7     public delegate void AlarmEventHandler(object sender, EventArgs e); 8  9     //2.声明事件;   10     public event AlarmEventHandler Alarm;11 12     //3.编写引发事件的函数;13     public void OnAlarm()14     {15         if (this.Alarm != null)16         {17             Console.WriteLine("\n狗报警: 有小偷进来了,汪汪~~~~~~~");18             this.Alarm(this, new EventArgs());   //发出警报19          }20     }21 }22 23 //事件接收者24 class Host25 {26     //4.编写事件处理程序27     void HostHandleAlarm(object sender, EventArgs e)28     {29         Console.WriteLine("主  人: 抓住了小偷!");30     }31 32     //5.注册事件处理程序33     public Host(Dog dog)34     {35         dog.Alarm += new Dog.AlarmEventHandler(HostHandleAlarm);36     }37 }38 39 //6.现在来触发事件40 class Program41 {42     static void Main(string[] args)43     {44         Dog dog = new Dog();45         Host host = new Host(dog);46 47         //当前时间,从2008年12月31日23:59:50开始计时48         DateTime now = new DateTime(2013, 12, 31, 23, 59, 50);49         DateTime midnight = new DateTime(2014, 1, 1, 0, 0, 0);50 51         //等待午夜的到来52         Console.WriteLine("时间一秒一秒地流逝... ");53         while (now < midnight)54         {55             Console.WriteLine("当前时间: " + now);56             System.Threading.Thread.Sleep(1000);    //程序暂停一秒57             now = now.AddSeconds(1);                //时间增加一秒58          }59 60         //午夜零点小偷到达,看门狗引发Alarm事件61         Console.WriteLine("\n月黑风高的午夜: " + now);62         Console.WriteLine("小偷悄悄地摸进了主人的屋内... ");63         dog.OnAlarm();64         Console.ReadLine();65     }66 }   

运行结果:

年元旦午夜时分到达。