![]() |
1
9
请注意,代理不会使发布服务器保持活动状态(它们只使target=subscriber保持活动状态),因此订阅的数量不会(单独)使广播服务器保持活动状态。因此,从这个角度来看,它是否被处置并不重要。如果没有引用广播公司的项目(并且事件订阅与此无关),则可以进行收集。
基本上
,委托是一对
有证据表明 不 保持源的活动状态;您应该看到收集了“源1”,即使我们还有订阅的匹配侦听器。如预期,“Listener 2”会 不 收集,因为我们还有匹配的广播公司:
|
![]() |
2
4
否。广播事件中的委托目标引用侦听器对象。这将使侦听器对象保持活动状态。侦听器对象没有返回广播对象的任何引用。 注意术语。处理广播对象不起任何作用。它必须是垃圾收集的,只有当对象没有引用时才会发生这种情况。发生这种情况时,也将自动收集委托对象,因为对它的唯一引用是由私有事件委托对象维护的委托目标的内部列表。这也会删除委托对侦听器的引用。如果没有其他对侦听器的引用,也将收集它。如果仍然是,它将不再获得事件通知。长话短说:您不必在广播类中将事件显式设置为空。 在侦听器中不完全相同,它由它订阅的事件引用。如果被宣布不适合业务(已处理),但广播公司仍在运行,则应明确取消其事件订阅。SystemEvents类是它的一个极端版本,它的事件是静态的。在引用已释放侦听器的委托上激发事件是您可能注意到的事情。 大多数实际的对象模型试图确保监听器对象在父对象离开时消失。Windows窗体就是一个很好的例子。那么就不需要显式地取消订阅事件。 |
![]() |
OREO · 如何在不实际单击复选框的情况下选中它 1 年前 |
![]() |
Dan · 在元素外部设置html点击处理程序点击后立即触发 1 年前 |
![]() |
Mero · Svelte在父事件调用上调用新的嵌套事件处理程序 1 年前 |
|
iorice · usercontrol dll中的组件事件 1 年前 |
![]() |
Awin · 点击事件功能不适用于Vue组件 1 年前 |
![]() |
Kiwi · 将可共享的自定义数据添加到事件MS图形api 1 年前 |