首页 > 代码库 > 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 }
运行结果:
年元旦午夜时分到达。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。