Cp11事件

类型之所以提供事件通知功能,是因为类型维护了一个已登记方法的列表,事件发生后,类型将通知列表登记的所有方法;

事件模型建立在委托的基础上。委托是调用回调方法的一种类型安全的方式。

设计事件类型

定义事件参数

EventArgs

定义事件成员

public event 委托类型<事件参数> 事件名称;

sender之所用Object,一个是考虑继承,一个是考虑灵活;

返回值是void;

定义负责引发事件的方法来通知事件的登记对象

protected virtual void OnNewMain(参数 e)

var temp=interlocked.CompareExchange(ref NewMail,null,null);
//考虑线程安全,这里需要仔细考虑
//事件主要在单线程中使用,所以线程安全并不是一个太大的问题
if(temp!=null)temp(this,e)

触发事件

在需要的地方调用触发事件的方法。

编译器如何实现事件

一个委托,一个add,一个remove

设计侦听事件类型

显示实现事件

事件集合,key-value;同一个类型的大量事件高效管理;

最新文章

  1. 【转】string.Format对C#字符串格式化
  2. [转]阿里云CentOS配置全过程
  3. echo 单引号和双引号
  4. swfit-block反向传值
  5. winston日志管理1
  6. MSM8974 fastboot烧写软件
  7. XHTML编码规范
  8. 关于《平安iOS面试》小结
  9. 使用 IIS Manager 对 Windows Azure 网站进行远程管理
  10. Canvas使用渐变之-径向渐变详解
  11. java初级开发程序员(第三单元)
  12. 双T型陷波滤波器
  13. 实现验证码图像文字的识别(C#调用DLL)
  14. CCF系列之最优灌溉(201412-4)
  15. new function
  16. HDU 3518 Boring counting
  17. Nestjs OpenAPI(Swagger)
  18. typeof() 和 GetType()区是什么
  19. 模块and包
  20. webpack4.x打包配置

热门文章

  1. AOP切点切面内容
  2. 多python版本下,使用pip安装第三方库
  3. mysql事务隔离
  4. 关于gitbash一直报:sh: __git_ps1: command not found的解决办法
  5. Linux系统中的vi/vim指令【详解】
  6. Array方法学习小结
  7. Cannot send session cache limiter - headers already sent问题
  8. array of TVarRec 动态数组使用
  9. spark exectors的启动总结
  10. python学习笔记:第18天 面向对象04-反射