事件处理机制

事件处理机制

ID:44814529

大小:54.24 KB

页数:4页

时间:2019-10-29

事件处理机制_第1页
事件处理机制_第2页
事件处理机制_第3页
事件处理机制_第4页
资源描述:

《事件处理机制》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、C#事件机制在所有关于C#事件机制的介绍中,我更倾向于发布者/订阅者(Publisher/Subscriber)这种描述。理解事件机制并不是一件容易的事情,它所涉及的思想值得我们好好去研究。本文资源来自《C#与.NET技术平台实战演练》——中国青年出版社谈到事件,我们涉及到两个角色:事件发布者(Publisher)和事件订阅者(Scriber),也可以说是事件发送者(Sender)和事件接收者(Receiver)的关系。举个例子来说,市面上目前有许多杂志,杂志的种类也很多。而我只对其中的某些感兴趣,那么我就可以向杂志发行商提出订阅。之后,每当杂志发行

2、时,我就会收到我在杂志发行商那儿订阅的杂志。在这个关系中,杂志发行商就相当于事件发行者,而我就是事件订阅者。每当杂志发行时,就触发了一个发行事件。用面向对象的语言解释,这两者的意义如下:事件发行者(Publisher)它是一个对象,且会维护自身的状态信息。每当状态信息发生变动时,便触发一个事件,并通知所有的事件订阅者。对于杂志发行商来说,每本杂志都有自己的信息在里面,当杂志发行时,我要通知订阅该杂志的人:杂志已经发行啦,请注意查收!事件接收者(Receiver)这个对象要注册它感兴趣的对象,也就是订阅它自己喜欢的杂志啦。另外,这个对象通常要提供一个事

3、件处理方法,在事件发行者触发一个事件后,会自动执行这个方法。对于上面所举的例子来说,也就是我收到杂志后要做什么事情,比如,你可以满世界地大喊:我收到杂志啦!也可以将杂志收藏起来慢慢欣赏,具体怎么实现完全取决你自己的喜好。以下是.NET事件处理机制的模型: 下面给一个简单的例子,用以阐述事件的思想: 1using System; 2using System.Collections.Generic; 3using System.Text; 4 5namespace EventDemo 6{ 7       public delegate void Sal

4、aryCompute();        //声明一个代理类 8 9       public class Employee10       {11              public event SalaryCompute OnSalaryCompute;         //定义事件,将其与代理绑定1213              public virtual void FireEvent()       //触发事件的方法14              {15                     if (OnSalaryCompute

5、 != null)16                     {17                            OnSalaryCompute();      //触发事件18                     }19              }20       }2122       public class HumanResource23       {24              public void SalaryHandler()          //事件处理函数25              {26       

6、              Console.WriteLine("Salary");     //只是打印一行字而已27              }2829              public static void Main()30              {31                     Employee ep = new Employee();32                     HumanResource hr = new HumanResource();33                     ep.OnS

7、alaryCompute+=new SalaryCompute(hr.SalaryHandler);       //注册34                     ep.FireEvent();        //触发事件35                     Console.Read();36              }37       }38}39在这个例子中,Employee类相当于一个事件发布者(Publisher),它定义了事件的相关信息,包括定义了一个事件用于计算薪水(OnSalaryCompute),以及一个触发事件的函数(

8、FireEvent()),为简单起见,本例没有加上事件参数。与之相对应,HumanResource类则相当于

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。