PropertyChangedEventHandler

PropertyChangedEventHandler

我在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中测试了内存应用程序,结果是:

android - PropertyChangedEventHandler导致内存泄漏-LMLPHP

最佳答案

看起来您的实现是可靠的。在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

09-15 23:54