gpt4 book ai didi

c# - 显式事件添加/删除,误解了吗?

转载 作者:可可西里 更新时间:2023-11-01 08:17:53 24 4
gpt4 key购买 nike

我最近一直在研究内存管理,并且一直在研究如何管理事件,现在,我看到了事件订阅的显式添加/删除语法。

我觉得很简单,添加/删除只是让我在订阅和取消订阅时执行其他逻辑?我明白了吗,还是还有更多?

此外,当我在这里时,任何清理我的事件句柄的建议/最佳实践。

最佳答案

add/remove 属性与其他成员使用set/get 属性的逻辑基本相同。它允许您在注册事件时创建一些额外的逻辑,并封装事件本身。

您为什么要这样做的一个很好的例子是在不需要时停止额外的计算(没有人正在收听该事件)。

例如,假设事件是由计时器触发的,如果没有人注册该事件,我们不希望计时器工作:

private System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer();
private EventHandler _explicitEvent;
public event EventHandler ExplicitEvent
{
add
{
if (_explicitEvent == null) timer.Start();
_explicitEvent += value;
}
remove
{
_explicitEvent -= value;
if (_explicitEvent == null) timer.Stop();
}
}

你可能想用一个对象来锁定添加/删除(事后)......

关于c# - 显式事件添加/删除,误解了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2923952/

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