public void FlushPendingInvalidations(IUIFramework framework) { Debug.Assert(!_flushing, "Flushing while already flushing!?!"); _flushing = true; try { Debug.Assert(pendingInvalidations.Count < _keys.Length, "Need to increase the size of MAX_PENDING_INVALIDATIONS."); pendingInvalidations.Keys.CopyTo(_keys, 0); for (int i = 0; i < pendingInvalidations.Count; i++) { PropertyKey key = _keys[i]; if (pendingInvalidations[key] == InvalidationState.Pending) { int result = framework.InvalidateUICommand((uint)CommandId, PropertyKeyExtensions.GetCommandInvalidationFlags(key), key.ToPointer()); pendingInvalidations[key] = result == 0 ? InvalidationState.WaitingForUpdateProperty : InvalidationState.Error; } } } catch (Exception) { pendingInvalidations.Clear(); throw; } finally { _flushing = false; } }