我在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中测试了内存应用程序,结果是:
最佳答案
看起来您的实现是可靠的。在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