我不确定我是否完全清楚附加对象中事件的含义.
这是我目前的理解,正确或精细:
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也被释放?
我确定我已经停止使用对象并且无法从事件中分离的位置(例如,我制作的计时器示例),因此我正在寻找有关其工作原理的更清晰的解释.