[Clr via C#读书笔记]Cp11事件
2024-09-27 23:27:36
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;同一个类型的大量事件高效管理;
最新文章
- 【转】string.Format对C#字符串格式化
- [转]阿里云CentOS配置全过程
- echo 单引号和双引号
- swfit-block反向传值
- winston日志管理1
- MSM8974 fastboot烧写软件
- XHTML编码规范
- 关于《平安iOS面试》小结
- 使用 IIS Manager 对 Windows Azure 网站进行远程管理
- Canvas使用渐变之-径向渐变详解
- java初级开发程序员(第三单元)
- 双T型陷波滤波器
- 实现验证码图像文字的识别(C#调用DLL)
- CCF系列之最优灌溉(201412-4)
- new function
- HDU 3518 Boring counting
- Nestjs OpenAPI(Swagger)
- typeof() 和 GetType()区是什么
- 模块and包
- webpack4.x打包配置