public class BaseClass : IDisposable { bool isDisposed = false; public BaseClass() { // // TODO: Add constructor logic here // } #region IDisposable Members public void Dispose() { this.Dispose(true); GC.SuppressFinalize(this); } public virtual void Dispose(bool doingDispose) { if (!this.isDisposed) { if (doingDispose) { //Release all managed resources } //Release all Unmanaged resources over here. //So if doingDispose is FALSE, then only unmanaged resources will be released. } this.isDisposed = true; } //Destructor ~BaseClass() { this.Dispose(false); } #endregion }
Snippet 2:
public class DerivedClass : BaseClass { private bool isDisposed = false; public DerivedClass() { // // TODO: Add constructor logic here // } public override void Dispose(bool doingDispose) { if (!this.isDisposed) { if (doingDispose) { // Release the managed resources you added in // this derived class here. } // Release the native unmanaged resources you added // in this derived class here } } }
Explanation:
|