private bool disposedValue = false; // To detect redundant calls protected virtual void Dispose(bool disposing) { if (!disposedValue) { if (disposing) { // Dispose contained objects UnregisterSolutionEventHandlers(CurrentSolution); CurrentSolution?.Dispose(); foreach (var item in OpenFiles) { if (item is IDisposable) { (item as IDisposable).Dispose(); } } // Clear event handlers SelectedFile = null; OpenFiles = null; this.FileOpened -= ApplicationViewModel_FileOpened; this.PropertyChanged -= ApplicationViewModel_PropertyChanged; } // TODO: free unmanaged resources (unmanaged objects) and override a finalizer below. // TODO: set large fields to null. disposedValue = true; } }
public void DispatchSolutionUnload(SolutionEventArgs e) { CurrentSolution.Dispose(); CurrentSolution = null; if (SolutionUnload != null) { SolutionUnload(this, e); } }