C# 事件
2014-08-08 17:26 wuzhang 阅读(4541) 评论(4) 编辑 收藏 举报要创建一个事件驱动的程序需要下面的步骤:
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 Host 25 { 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 Program 41 { 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 }
运行结果:
年元旦午夜时分到达。