C# 在.net中添加和删除事件处理程序
我最近创建了一个示例应用程序,在其中我实现了事件和委托,当属性值更改时,此事件将引发,我有一个关于事件的问题C# 在.net中添加和删除事件处理程序,c#,events,delegates,C#,Events,Delegates,我最近创建了一个示例应用程序,在其中我实现了事件和委托,当属性值更改时,此事件将引发,我有一个关于事件的问题 事件对象是否在内存中创建?或者它们只是静态对象,一旦触发事件就会被删除 执行事件后是否需要删除处理程序以释放资源。删除处理程序是否会提高应用程序的性能?我指的是使用大量事件的应用程序 事件确实占用内存,在您取消订阅之前不会进行垃圾收集。它们是导致死亡的共同原因 事件可以是静态的,也可以是实例绑定的。当事件广播器处于活动状态时,事件的订阅者永远不会被删除,除非隐式删除,通常使用-=操作符
事件确实占用内存,在您取消订阅之前不会进行垃圾收集。它们是导致死亡的共同原因
如果所有这些都是您关心的问题,您也许可以研究一下模式。
事件
类似于代理
(具有另一层保护)
当您注册到一个事件时,您实际上是在引用另一个对象
此对象无法通过GC,因为您对其进行了引用
它不是“未引用的”
但是您的对象可以通过GC。(如果未引用)
因此,最终导致内存泄漏
您应该手动删除引用