国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

CLRviaC#深解筆記五-事件

2019-11-14 13:33:26
字體:
來源:轉載
供稿:網友
事件處理實際上是一種具有特殊簽名的delegate, 像這個樣子:public delegate void EventHandler(object sender, EventArgs e);
 
類型定義事件成員,就可以通知其他對象發生了特定的事情。如果定義一個事件成員,意味著類型要提供一下能力:
#1,方法可登記也可注銷它對該事件的關注
#2,該事件發生時,登記了的方法會收到通知。
 
類型之所以能夠提供事件通知功能,是因為類型維護了一個已經登記方法的列表。事件發生后,類型將通知列表中所有已登記的方法。
CLR事件模型建立在委托的基礎上。委托是調用(invoke)回調方法的一種類型安全的方式。對象憑借回調方法接收他們訂閱的通知。
 
---------
invoke和call
在英語的語境中,invoke和call的區別在于,在執行一個所有信息都已知的方法時,用call比較恰當。這些信息包括要引用的類型、方法的簽名以及方法名。
但是,在需要先“喚出”某個東西來幫你調用一個信息不明的方法時,用invoke就比較恰當。
 
---------
 
 
這個OnBoiled方法的問題在于,線程可能發現Boiled不為null, 然后,就在調用之前,另一個線程從委托鏈中移除一個委托,使Boiled變成了null,還會拋出一個NullReferenceException異常。為了修正這個競態問題,可以像下面這樣寫OnBoiled方法
 
 
 
 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 寿光市| 自治县| 关岭| 沧源| 炎陵县| 泽普县| 青河县| 茶陵县| 夏邑县| 西林县| 商南县| 三都| 平阴县| 三原县| 乐至县| 黎平县| 临汾市| 特克斯县| 宜黄县| 江都市| 曲沃县| 乐清市| 大宁县| 佳木斯市| 鄂温| 武义县| 六枝特区| 安顺市| 西和县| 江阴市| 南汇区| 夏河县| 徐闻县| 封开县| 彰武县| 上林县| 土默特右旗| 乌海市| 宁都县| 千阳县| 游戏|