protected virtual void OnChanged() { // avoiding inifinite loop if ( !ToBeRehash ) { try { HashInvalid = true; ToBeRehash = true; if ( Changed != null ) Changed(this, EventArgs.Empty); } finally { ToBeRehash = false; } } }