====== Dispose Pattern ====== ===== Base Class ===== abstarct class BaseClass{ private bool _disposed = false protected virtual void Dispose(bool disposing){ if(_disposed){ return; } if(!disposing){ //Free managed objects } //Free any other objects _disposed = true; } } ===== Implement Class ===== class ImplClass : BaseClass{ private bool _disposed = false; protected override void Dispose(bool disposing){ if(_disposed){ return; } if(disposing){ //Free managed objects } //Free any other objects _disposed = true; base.Dispose(disposing); } }