PropertyChangedEventHandler导致内存泄漏

时间:2015-10-09 08:16:55

标签: android memory-leaks xamarin eventhandler

我在xamarin.forms中创建Android应用程序,但问题是PropertyChangedEventHandler导致内存泄漏。

我的代码:

 protected virtual void OnPropertyChanged(string propertyName)
        {
            PropertyChangedEventHandler handler = PropertyChanged;

          if (handler != null)
    try {
         handler(this, new PropertyChangedEventArgs(propertyName));
        } catch (Exception ex) 
        {

        }

    }

我在xamarin.profiler中测试内存应用程序,结果是:

enter image description here

1 个答案:

答案 0 :(得分:1)

看起来您的实施是可靠的。在C#6中调用事件的另一种线程安全方法是:

    public event PropertyChangedEventHandler PropertyChanged;
    protected virtual void OnPropertyChanged( string propertyName )
    {
        PropertyChangedEventArgs e = new PropertyChangedEventArgs( propertyName );
        PropertyChanged?.Invoke( this, e );
    }

我猜测事件订阅逻辑可能是罪魁祸首。请记住,活动发布者会让其订阅者保持活力。这是一篇关于事件订阅和潜在内存泄漏的好文章。 Understanding and Avoiding Memory-Leaks