我在 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
关于android - PropertyChangedEventHandler 导致内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33033269/