protected override void Dispose(bool disposing) { if (_disposed) { return; } if (disposing) { _disposed = true; _page = null; if (!_fragmentManager.IsDestroyed) { FragmentTransaction transaction = _fragmentManager.BeginTransactionEx(); foreach (Fragment fragment in _fragments) { transaction.RemoveEx(fragment); transaction.SetTransitionEx((int)FragmentTransit.None); } transaction.CommitAllowingStateLossEx(); _fragmentManager.ExecutePendingTransactionsEx(); _fragments = null; _fragmentManager = null; } } base.Dispose(disposing); }
protected virtual void Dispose(bool disposing) { if (_disposed) { return; } _disposed = true; if (disposing) { if (_currentRenderer != null && _currentRenderer.Fragment.IsAlive()) { FragmentTransaction transaction = FragmentManager.BeginTransaction(); transaction.RemoveEx(_currentRenderer.Fragment); transaction.CommitAllowingStateLossEx(); FragmentManager.ExecutePendingTransactionsEx(); } Element.PropertyChanged -= OnElementPropertyChanged; Element.SizeChanged -= OnElementSizeChanged; ((IShellController)Element).RemoveAppearanceObserver(this); // This cast is necessary because IShellFlyoutRenderer doesn't implement IDisposable (_flyoutRenderer as IDisposable)?.Dispose(); _currentRenderer.Dispose(); _currentRenderer = null; } Element = null; // TODO: free unmanaged resources (unmanaged objects) and override a finalizer below. // TODO: set large fields to null. _disposed = true; }