How to

implement IDisposable

Published: 26. September 2011 | Updated: 26. October 2011
License: Microsoft Public License (MS-PL)
Categories: Implementations
Tags: C# Design Patterns
Was this snippet helpful for you? YESYES / NONO

Snippet code shows how to correctly implement IDisposable interface
public class MyClass : IDisposable
{
    private StringWriter _resource;
    private bool _disposed;

    public MyClass(StringWriter stringWriter)
    {
        _resource = stringWriter;
    }

    public void DoSomething()
    {
        if (_disposed) throw new ObjectDisposedException("Resource was disposed.");
        string text = _resource.ToString();
    }

    public void Dispose()
    {
        Dispose(true);
        GC.SuppressFinalize(this);
    }

    protected virtual void Dispose(bool disposing)
    {
        if (!_disposed)
        {
            if (disposing)
            {
                if (_resource != null) _resource.Dispose();
            }

            _resource = null;
            _disposed = true;
        }
    }
}
Send us feedback about this snippet »



Related Snippets: