Skip to content

Use IDisposable Correctly

Aaron edited this page Feb 1, 2016 · 3 revisions

Dispose() should be made safe to call multiple times

If an object's Dispose method is called more than once, the object must ignore all calls after the first one. The object must not throw an exception if its Dispose method is called multiple times. source

Standard boilerplate for IDisposable

    #region Dispose
    private bool _disposed;

    [ NonAction ]
    void IDisposable . Dispose()
    {
        Dispose( true );
        GC .SuppressFinalize( this );
    }

    protected override void Dispose( bool disposing)
    {
        if (_disposed)
        {
            return ;
        }

        if (disposing)
        {
            _context . Dispose();
        }

        _disposed = true ;

        base .Dispose(disposing);
    }

    #endregion Dispose
Clone this wiki locally