gpt4 book ai didi

c# - 什么是轻量级事件?

转载 作者:行者123 更新时间:2023-11-30 15:48:16 25 4
gpt4 key购买 nike

在术语轻量级事件中跑了几次。这些文本没有附有任何代码片段来弄清楚这个术语背后的想法。
如果有人能解释什么是轻量级事件并举个例子,我将不胜感激。

最佳答案

当您将事件处理程序添加到事件(或将方法组添加到委托(delegate),实际上)时,委托(delegate)将保存对方法组所在对象的引用,如果它是实例方法的话。

换句话说,触发事件的对象将保留在订阅事件时正在接收事件的对象上。

因此,如果您使用完接收事件的对象,它仍然存在(并响应事件),即使您使用完它并释放所有引用(没有取消订阅)也是如此。

这导致了对轻量级事件的需求,这些事件不保留引用。

这是 在 .NET Framework 中默认提供的,所以如果你想实现它,你必须使用 add and remove accessors when declaring your event连同 WeakReference存储通过隐式值参数传递的委托(delegate)。

然后,当您触发事件时,您将检查您的 WeakReference 集合(您必须单独维护它才能执行此操作),特别是 IsAliveTarget属性以确定是否已收集委托(delegate)。如果没有,那么您将执行它,否则,您将忽略它(并很可能压缩您的列表)。

关于c# - 什么是轻量级事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2763150/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com