public void Dispose() { // Setup initial conditions. if (isDisposed) return; // Pass execution to derived class. OnDisposed(); // Finish up. FireDisposed(); isDisposed = true; }