标签:注册 ace 驱动程序 自定义 lin 信号 collect .net 步骤
一个事件代表程序中发生一件显著事情的信号。它包括事件的发送方和接收方。我们把触发事件的对象称为事件的发送者,响应事件的对象称为事件的接收者。在C#中,事件和委托经常联系在一块,他们的关系就是对象和类的关系。
在C#的窗体应用开发中,.NET 中预定义了许多种专门用于事件的委托类型,比如 EventHandler、 KeyEventHandler、 MouseEventHandler 等。因此这里主要介绍怎么自定义一个事件。
(1)使用事件其实就是一个创建事件驱动程序的过程。一般采取的步骤如下:
1.声明关于事件的委托;
2.声明事件;
3.编写触发事件的函数;
4.创建事件处理程序;
5.注册事件处理程序;
6.在适当的条件下触发事件。
(2) 编写一个自定义事件。
深林里有一只兔子和一只羊,晚上兔子睡觉的时候,羊负责看守洞口。如果有狼出没,羊就发出一个 Alarm 事件,兔子接到 Alarm 事件后就和羊一起采取行动。假设狼于 2017 年8月3日晚上12点整到达。
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace eventDemo 8 { 9 class Sheep 10 { 11 //1.声明关于事件的委托; 12 public delegate void AlarmEventHandler(object sender, EventArgs e); 13 14 //2.使用event关键字声明事件; 15 public event AlarmEventHandler Alarm; 16 17 public void OnAlarm() //3.编写引发事件的函数; 18 { 19 if (this.Alarm != null) 20 this.Alarm(this, new EventArgs()); //发出警报 21 } 22 } 23 //事件接收者 24 class Rabbit 25 { 26 //4.编写事件处理程序 27 void RabbitHandleAlarm(object sender, EventArgs e) 28 { 29 Console.WriteLine("兔子: 狼来啦,快躲起来! "); 30 } 31 //5.注册事件处理程序; 32 public Rabbit(Sheep sheep) 33 { 34 sheep.Alarm += new Sheep.AlarmEventHandler(RabbitHandleAlarm); 35 } 36 } 37 //6.现在来触发事件 38 class Program 39 { 40 static void Main(string[] args) 41 { 42 Sheep sheep = new Sheep(); 43 Rabbit rabbit = new Rabbit(sheep); 44 DateTime now = new DateTime(2017, 8, 2, 23, 59, 55); 45 DateTime midnight = new DateTime(2017, 8, 3, 0, 0, 0); 46 Console.WriteLine("时间一秒一秒地流逝,等待午夜的到来... "); 47 while (true) 48 { 49 Console.WriteLine("当前时间: " + now); 50 //午夜零点狼出没,羊引发 Alarm 事件 51 if (now == midnight) 52 { 53 Console.WriteLine("\n 沙沙沙, 狼悄悄地来到了羊的附近..."); 54 //引发事件 55 Console.WriteLine("\n 羊报警: 有狼出没,咩~~~~~~~"); 56 sheep.OnAlarm(); 57 break; 58 } 59 System.Threading.Thread.Sleep(1000); //程序暂停一秒 60 now = now.AddSeconds(1); //时间增加一秒 61 } 62 } 63 } 64 }
当午夜时分小偷到达时, sheep 调用 sheep.OnAlarm()函数,从而触发 Alarm 事件,于是系统找到并执行了注册在 Alarm 事件中的事件处理程序 RabbitHandleAlarm()。引发事件的代码
(即 OnAlarm()函数)和事件处理程序是分离的,引发事件的代码只管调用“Alarm()”,而事件处理程序另外独立定义,它们之间通过事件 Alarm 联系起来。
事件处理程序的参数应该和事件委托相同。一般情况下,事件处理程序接受两个参数,
一个是事件的发送者sender,一个是事件参数e 。
Ending.....
标签:注册 ace 驱动程序 自定义 lin 信号 collect .net 步骤
原文地址:http://www.cnblogs.com/wozuiaidachengzi/p/7279445.html