少數幾次進入術語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. 爲什麼HTML的DIV輕量級?
- 4. 什麼是拖放最好的輕量級解決方案?
- 5. 什麼是便攜式輕量級彗星服務器實現?
- 6. 什麼是最好的UIElements輕量級容器?
- 7. 什麼是適合我們需求的輕量級ORM?
- 8. 什麼是持久化Java對象的輕量級選項
- 9. 什麼是最好的,輕量級的JSON/ajax腳本?
- 10. 什麼是Flex 4中最輕量級的容器?
- 11. 什麼是django-sentry的一些輕量級替代記錄?
- 12. 什麼是一個很好的輕量級CSV查看器?
- 13. 輕量級重量級
- 14. 輕量級文件系統
- 15. 輕量級JRE
- 16. 輕量級邊緣
- 17. 輕量級事務是否支持delete語句if存在?
- 18. 什麼是最輕量級的方式來檢測瀏覽器是Android?
- 19. Java Swing:輕量級和重量級組件的疊加組件?
- 20. 輕量級與重量級過程
- 21. 如何輕量級註冊週期性事件?
- 22. 移動html5應用輕量級觸摸事件庫?
- 23. 跨瀏覽器事件支持的輕量級庫 - JavaScript
- 24. 實現事件驅動的輕量級線程
- 25. 內部類是否輕量級?
- 26. 你用什麼樣的輕量級JS選項卡?
- 27. 爲什麼線程被稱爲輕量級進程?
- 28. 什麼意思是「擺動部件重量輕」?
- 29. 輕量級實時文件閱讀器?
- 30. 輕量級文件驗證與PKI
一個很好的引導學習更多的是這裏 http://stackoverflow.com/questions/185931/weakreference-and-event-handling – fostandy 2010-05-13 06:33:15