private void ListenForFreezableChanges(object resource) { if (!ReadInternalState(InternalState.IsListeningForFreezableChanges)) { // If this value is an unfrozen Freezable object, we need // to listen to its changed event in order to properly update // the cache. Freezable resourceAsFreezable = resource as Freezable; if (resourceAsFreezable != null && !resourceAsFreezable.IsFrozen) { if (_weakContainerRRE == null) { _weakContainerRRE = new ResourceReferenceExpressionWeakContainer(this); } // Hook up the event to the weak container to prevent memory leaks (Bug436021) _weakContainerRRE.AddChangedHandler(resourceAsFreezable); WriteInternalState(InternalState.IsListeningForFreezableChanges, true); } } }
private void ListenForFreezableChanges(object resource) { if (!ReadInternalState(InternalState.IsListeningForFreezableChanges)) { // If this value is an unfrozen Freezable object, we need // to listen to its changed event in order to properly update // the cache. Freezable resourceAsFreezable = resource as Freezable; if( resourceAsFreezable != null && !resourceAsFreezable.IsFrozen ) { if (_weakContainerRRE == null) { _weakContainerRRE = new ResourceReferenceExpressionWeakContainer(this); } // Hook up the event to the weak container to prevent memory leaks (Bug436021) _weakContainerRRE.AddChangedHandler(resourceAsFreezable); WriteInternalState(InternalState.IsListeningForFreezableChanges, true); } } }