CLR via C# 读书笔记 3-6 比较APM和EAP(异步编程模型和基于事件的编程模式)
2010-11-30 12:47
381 查看
APM: The Asynchronous Programming Model (异步编程模型) BeginXXX
EAP: The Event-Base Asynchronous Pattern (基于事件的编程模式) Button.Click+=........
EPM: The Event-Base Programming Model
1.本质上EAP内部也是使用了APM,只是EAP做了一些封装, 那么EAP会多使用一些内存空间(例如EventArgs),也会多使用一些GC的操作
2.简单情况下 EPM一般是一个更好的选择,而且也更为容易使用 , EPM也有一些限制 包括
1) 必须在开始执行异步方法前先注册事件, 否则事件就有可能不被执行
2) 那么当你想不使用某个事件的时候必须注销事件,(事件也经常会造成内存泄露,有兴趣的朋友可以去看一下弱引用的事件)
3) 静态方法和单例类不应该使用EPM, (我个人不是很同意这种看法,书中原文为:static methods and singleton classes cannot offer the EPM)
4) EAP不能采用catch来处理异常
EAP: The Event-Base Asynchronous Pattern (基于事件的编程模式) Button.Click+=........
EPM: The Event-Base Programming Model
1.本质上EAP内部也是使用了APM,只是EAP做了一些封装, 那么EAP会多使用一些内存空间(例如EventArgs),也会多使用一些GC的操作
2.简单情况下 EPM一般是一个更好的选择,而且也更为容易使用 , EPM也有一些限制 包括
1) 必须在开始执行异步方法前先注册事件, 否则事件就有可能不被执行
2) 那么当你想不使用某个事件的时候必须注销事件,(事件也经常会造成内存泄露,有兴趣的朋友可以去看一下弱引用的事件)
3) 静态方法和单例类不应该使用EPM, (我个人不是很同意这种看法,书中原文为:static methods and singleton classes cannot offer the EPM)
4) EAP不能采用catch来处理异常
相关文章推荐
- 《CLR Via C# 第3版》笔记之(二十一) - 异步编程模型(APM)
- [转载] C#异步编程模型2--基于事件的异步模式
- CLR via C# 读书笔记 4-1 线程同步-常见的锁,原生用户模式和核心模式 (上)
- 异步编程:基于事件的异步编程模式(EAP)
- 【读书笔记】《框架设计(第2版)CLR Via C#》中两个比较有趣的知识点
- CLR Via C# 第一章(CLR的执行模型)——读书笔记
- CLR via C# 3 读书笔记(5):第1章 CLR执行模型 — 1.5 本地代码生成器工具:NGen.exe
- CLR via C# 3 读书笔记(9):第1章 CLR执行模型 — 1.9 与非托管代码互操作
- 《CLR via C#》读书笔记(1)CLR执行模型
- 《CLR via C#》读书笔记(2) -- .NET程序的运行模型(上)
- 《CLR via C#》读书笔记-异步编程(三)
- 【读书笔记】《框架设计(第2版)CLR Via C#》中两个比较有趣的知识点(转)(good)
- 【温故知新】c#异步编程模型(APM)--使用委托进行异步编程
- CLR via C# 3 读书笔记(3):第1章 CLR执行模型 — 1.3 加载CLR
- 基于代的垃圾回收机制--《CLR via C#》读书笔记
- CLR via C# 3 读书笔记(7):第1章 CLR执行模型 — 1.7 通用类型系统
- 《CLR Via C# 第3版》笔记之(二十二) - APM和EAP
- 《CLR via C#》读书笔记-异步编程(一)
- 《CLR via C#》读书笔记 之 事件
- CLR via C# 读书笔记 5-7 GC的工作模式