/// <summary> /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. /// </summary> private void CheckAndDispose(bool disposing) { if (!IsDisposed) { Disposing?.Invoke(this, DisposeEventArgs.Get(disposing)); Dispose(disposing); GC.SuppressFinalize(this); IsDisposed = true; Disposed?.Invoke(this, DisposeEventArgs.Get(disposing)); } }
/// <summary> /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. /// </summary> private void CheckAndDispose(bool disposing) { // TODO Should we throw an exception if this method is called more than once? if (!IsDisposed) { EventHandler <EventArgs> disposingHandlers = Disposing; if (disposingHandlers != null) { disposingHandlers(this, DisposeEventArgs.Get(disposing)); } Dispose(disposing); GC.SuppressFinalize(this); IsDisposed = true; EventHandler <EventArgs> disposedHandlers = Disposed; if (disposedHandlers != null) { disposedHandlers(this, DisposeEventArgs.Get(disposing)); } } }