我不确定是否完全清楚附着在对象中的事件的影响。在什么情况下脱离必要的事件?
这是我目前的理解,正确的或复杂:
1.附加到地方级赛事中不需要拆卸
例子:
this.Closing += new System.ComponentModel.CancelEventHandler(MainWindow_Closing);
public event EventHandler OnMyCustomEvent = delegate { };
我假设当你的ob物品被丢弃或垃圾收集,功能被解除分配并且会自动脱离事件。
2.附加到对象,你不再需要的(= NULL;)必须从
实例分离: 附加到定时器的经过的事件,你只响应一次。我假设你需要将Timer存储在本地变量中,以便在事件触发后分离Elapsed事件。因此,宣布计时器在本地方法的范围,像这样将导致泄漏:
System.Timers.Timer myDataTimer = new System.Timers.Timer(1000); myDataTimer.Elapsed += new System.Timers.ElapsedEventHandler(myDataTimer_Elapsed);
3.附加到事件在本地对象类并不需要处置?
例如,如果您有一个ObservableCollection,您创建,监视并让它死亡。如果使用本地私有函数附加到CollectionChanged事件,那么当您的类被垃圾回收时,此函数是否不会释放,导致ObservableCollection也被释放?
我确定我有地方我已经停止使用对象,并未能从事件(例如,我做的定时器例子)分离,所以我正在寻找一个更清晰的解释如何工作。
你完全正确,我过于复杂的事情。在寻找示例时,几乎所有人都表现出与事件分离,这只会让我相信订户可以让发布商保持活力。 – 2009-04-21 19:38:31