Skip to content

Instantly share code, notes, and snippets.

@petarvucetin
Created January 18, 2013 22:49
Show Gist options
  • Save petarvucetin/4569373 to your computer and use it in GitHub Desktop.
Save petarvucetin/4569373 to your computer and use it in GitHub Desktop.
public class DisposableClass :
IDisposable
{
bool _disposed;
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
~DisposableClass()
{
Dispose(false);
}
protected virtual void Dispose(bool disposing)
{
if (_disposed)
return;
if (disposing)
{
// free other managed objects that implement
// IDisposable only
}
// release any unmanaged objects
// set thick object references to null
_disposed = true;
}
}
public interface IDisposable
{
void Dispose();
}
public class SubDisposableClass :
DisposableClass
{
private bool _disposed;
// a finalizer is not necessary, as it is inherited from
// the base class
protected override void Dispose(bool disposing)
{
if (!_disposed)
{
if (disposing)
{
// free other managed objects that implement
// IDisposable only
}
// release any unmanaged objects
// set thick object references to null
_disposed = true;
}
base.Dispose(disposing);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment