Example #1
0
        /// <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));
            }
        }
Example #2
0
        /// <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));
                }
            }
        }