请参阅here:
只要源对象寿命超过对象寿命 在侦听器中,正常事件模式会导致内存泄漏: 侦听器的存活时间比预期的更长。
关于替代方案,即侦听器类在本地方法中创建源,并侦听source事件的属性更改,该方法完成后,GC将能够回收< strong>来源?
public class Listener
{
private Data _data;
public Lisener(Data data)
{
_data=data;
}
public void DoWork()
{
var source = new SourceClass(_data); //this class inherits from INotifyPropertyChanged interface
var source.PropertyChanged+={//do something};
//when this method finishes, will the memory held by source be freed automatically by GC?
}
}