CLR via C# 讀書筆記 3-6 比較APM和EAP(異步編程模型和基于事件的編程模式)
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來處理異常
浙公網安備 33010602011771號