相关疑难解决方法(0)

在什么情况下从必要的事件中分离?

我不确定我是否完全清楚附加对象中事件的含义.

这是我目前的理解,正确或精细:

1.不需要分离附加到本地类事件

例子:

this.Closing += new System.ComponentModel.CancelEventHandler(MainWindow_Closing);

public event EventHandler OnMyCustomEvent = delegate { };

我假设当你的对象被处理或垃圾收集时,这些函数被释放并自动从事件中分离出来.

2.附加到不再需要的对象(= null;)必须从中分离

示例:附加到计时器的Elapsed事件,您只响应一次.我假设您需要将Timer存储在本地变量中,以便在事件触发后分离Elapsed事件.因此,在本地方法范围内声明计时器会导致泄漏:

System.Timers.Timer myDataTimer = new System.Timers.Timer(1000); myDataTimer.Elapsed += new System.Timers.ElapsedEventHandler(myDataTimer_Elapsed);

3.将本地对象中的事件附加到您的班级不需要处理?

例如,如果您有一个ObservableCollection,您可以创建,监视并让它死掉.如果使用本地私有函数附加到CollectionChanged事件,当您的类被垃圾收集时,此函数是否会解除分配,导致ObservableCollection也被释放?

我确定我已经停止使用对象并且无法从事件中分离的位置(例如,我制作的计时器示例),因此我正在寻找有关其工作原理的更清晰的解释.

.net c# events event-handling

16
推荐指数
1
解决办法
3713
查看次数

标签 统计

.net ×1

c# ×1

event-handling ×1

events ×1