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