我最近创建了一个示例应用程序,其中我实现了事件和委托,当属性值更改时,此事件将引发,我有关于事件的问题
事件对象是否在内存中创建?或者它们只是静态对象,一旦事件被触发就会被删除?
执行事件后是否需要删除处理程序以释放资源。删除处理程序一旦完成,提升应用程序性能,我说的是使用大量事件的应用程序
答案 0 :(得分:1)
事件确实占用内存,并且在您取消订阅之前不会进行垃圾回收。它们是memory leaks.
的常见原因答案 1 :(得分:1)
事件既可以是静态的,也可以是实例绑定的。事件广播者活着时,永远不会删除事件的订阅者,除非通过隐式方式这样做,通常使用 - =运算符。
是的,是的,是的。如果您没有清理订户,则会发生内存泄漏等待。
如果所有这些都是您关注的问题,也许您可以查看WeakEvent模式。
答案 2 :(得分:0)
events
与delegates
类似(另一层保护)。
当您注册某个事件时 - 您实际上正在引用另一个对象。
此对象无法通过GC,因为您引用了它!
它不是“未引用的”。
但您的对象可以通过GC。 (如果没有引用)。
所以最终导致内存泄漏。
你应该手动删除引用。