public void EventHandlerShouldBeWeak() { bool eventReceived = false; var listener = new PropertyChangedListener(); WeakEventHandler <PropertyChangedEventHandler, PropertyChangedEventArgs> .Register( this, listener, handler => new PropertyChangedEventHandler(handler), (s, h) => s.PropertyChanged += h, (s, h) => s.PropertyChanged -= h, (l, s, e) => { l.OnEvent(s, e); eventReceived = true; }); RaiseEvent(); Assert.IsTrue(listener.EventReceived); Assert.IsTrue(eventReceived); listener.Reset(); eventReceived = false; listener = null; GC.Collect(); RaiseEvent(); Assert.IsFalse(eventReceived); }
public void EventHandlerShouldBeWeak() { bool eventReceived = false; var listener = new PropertyChangedListener(); WeakEventHandler<PropertyChangedEventHandler, PropertyChangedEventArgs>.Register( this, listener, handler => new PropertyChangedEventHandler(handler), (s, h) => s.PropertyChanged += h, (s, h) => s.PropertyChanged -= h, (l, s, e) => { l.OnEvent(s, e); eventReceived = true; }); RaiseEvent(); Assert.IsTrue(listener.EventReceived); Assert.IsTrue(eventReceived); listener.Reset(); eventReceived = false; listener = null; GC.Collect(); RaiseEvent(); Assert.IsFalse(eventReceived); }