如果源寿命短于侦听器,GC是否可以回收源?

时间:2019-07-05 10:35:22

标签: c# .net garbage-collection

请参阅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?
    }
} 

0 个答案:

没有答案