少數幾次進入術語lightweight event
。該文本沒有附帶任何代碼片段來找出該術語背後的想法。
我真的很感激,如果任何人都可以解釋什麼是輕量級事件,並拋出一個例子。什麼是輕量級事件?
回答
當您將一個事件處理程序添加到一個事件(或一個方法組到真的)時,如果它是一個實例方法,委託將保存方法組所在對象的引用。
換句話說,觸發事件的對象將保持在您訂閱該事件時接收事件的對象上。因此,如果您完成了使用接收事件的對象,即使您已完成並釋放所有引用(不退訂),它仍然保持(並響應事件)。
這導致對lightweight events
的期望,這是不保留在引用上的事件。
這是默認情況下不使用.NET框架提供外的開箱,所以如果你想實現這一點,你將不得不使用沿着add and remove accessors when declaring your event用WeakReference存儲傳遞委託通過隱式值參數。
然後,當您觸發事件時,您需要檢查您的WeakReference集合(您必須單獨維護)以確定代理是否已收集。如果沒有,那麼你會執行它,否則,你會通過它(並壓縮你的列表,最有可能)。
+1。很好的答案 - 非常簡潔明瞭。消化解釋之後,我意識到我在[Richter](http://www.amazon.com/gp/product/0735614229?ie=UTF8&tag=ssm0a-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=0735614229)中瞭解了這一點。 – 2010-05-05 06:26:15
- 1. WinForms中的輕量級/重量級組件是什麼?
- 2. 什麼是帶有Web界面的輕量級CMS插件?
- 3. 「輕量級擴展」代表什麼? (UML)
- 4. 爲什麼HTML的DIV輕量級?
- 5. 爲什麼JSON比XML更輕量級?
- 6. 爲什麼結構是輕量級的,並且類是C++中的重量級
- 7. 這個輕量級模式真的是輕量級模式嗎?
- 8. 輕量級是一個Swing組件?
- 9. 什麼是「輕量級交易」,爲什麼他們這麼稱呼?
- 10. 在java中,JFrame是重量較輕的組件還是輕量級組件?
- 11. 什麼是一個很好的輕量級CSV查看器?
- 12. 什麼是持久化Java對象的輕量級選項
- 13. 什麼是最好的,輕量級的JSON/ajax腳本?
- 14. 輕量級框架的含義是什麼?
- 15. 什麼是自定義AJAX調用最輕量級的方式?
- 16. 什麼是便攜式輕量級彗星服務器實現?
- 17. 什麼是一個好的通用輕量級CSS框架?
- 18. 什麼是Flex 4中最輕量級的容器?
- 19. 什麼是最好的UIElements輕量級容器?
- 20. 什麼是用Java編碼HTML實體的輕量級庫?
- 21. 什麼是適合我們需求的輕量級ORM?
- 22. 什麼是拖放最好的輕量級解決方案?
- 23. 什麼是django-sentry的一些輕量級替代記錄?
- 24. 輕量級重量級
- 25. 輕量級文件系統
- 26. 輕量級像
- 27. 輕量級JRE
- 28. 輕量級java事務管理
- 29. 輕量級線程
- 30. 輕量級PHP CRUD
一個很好的引導學習更多的是這裏 http://stackoverflow.com/questions/185931/weakreference-and-event-handling – fostandy 2010-05-13 06:33:15