【问题标题】:PropertyChangedEventHandler causes memory leakPropertyChangedEventHandler 导致内存泄漏
【发布时间】:2016-01-07 02:34:40
【问题描述】:

我在 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 memory-leaks xamarin eventhandler


    【解决方案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

    【讨论】:

      猜你喜欢
      • 2015-07-06
      • 2014-06-07
      • 2013-11-20
      • 2011-10-28
      • 2016-01-18
      • 2012-12-13
      • 1970-01-01
      • 2011-01-08
      • 2011-02-01
      相关资源
      最近更新 更多