Skip to content

Instantly share code, notes, and snippets.

@Rcomian
Last active December 26, 2015 05:39
Show Gist options
  • Save Rcomian/7101725 to your computer and use it in GitHub Desktop.
Save Rcomian/7101725 to your computer and use it in GitHub Desktop.
class MyClass : IDisposable
{
private bool disposed = false;
protected virtual void Dispose(bool disposing)
{
if (!disposed)
{
if (disposing)
{
// Dispose managed resources
}
// Dispose unmanaged resources
disposed = true;
}
}
~MyClass()
{
Dispose(false);
}
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
}
class MyDerivedClass : MyClass
{
private bool disposed = false; // to detect redundant calls
public MyDerivedClass()
:base()
{
}
protected override void Dispose(bool disposing)
{
if (!disposed)
{
if (disposing)
{
// Dispose this class's managed resources
}
// Dispose this class's non-managed resources
disposed = true;
}
base.Dispose(disposing);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment