public class ClassName : IDisposable { #region Variable Declarations private bool _disposed = false; #endregion #region Constructors & Destructors public ClassName() { } ~ClassName() { //Invoke the helper class that will clean up and release any applicable resources. //Note that we are passing a false which indicates that the Garbage Collector //triggered the clean up. ReleaseResources(false); } #endregion #region IDisposable Interface Methods public void Dispose() { //Invoke the helper class that will clean up and release any applicable resources. //Note that we are passing a true which indicates that the method was invoked by //the caller/user. ReleaseResources(true); //Suppress the Finalization step of the Garbage Collector. GC.SuppressFinalize(this); } private void ReleaseResources(bool disposing) { //Ensure that the object has not already been disposed. if (!this._disposed) { if (disposing) { //Clean up and dispose of all MANAGED resources here. } //Clean up and dispose of all UNMANAGED resources here. } //Indicate that the object has already been disposed. this._disposed = true; } #endregion }