Skip to content

Repository files navigation

Icon

WeakEventListener

The WeakEventListener allows the owner to be garbage collected if its only remaining link is an event handler. See https://docs.microsoft.com/en-us/dotnet/framework/wpf/advanced/weak-event-patterns for more information; the wisdom found on that page is applicable for other platforms inc UWP, Xamarin.Mac, Xamarin.iOS & Xamarin.Android.

Supported Platforms

  • netstandard v1.1 (and up)

Installation

Installation is done via NuGet:

PM> Install-Package WeakEventListener

Usage

publicclassSampleClass{publiceventEventHandler<EventArgs>Raisevent;publicvoidDoSomething(){OnRaiseEvent();}protectedvirtualvoidOnRaiseEvent(){Raisevent?.Invoke(this,EventArgs.Empty);}}publicvoidTest_WeakEventListener_Events(){boolisOnEventTriggered=false;boolisOnDetachTriggered=false;SampleClasssample=newSampleClass();WeakEventListener<SampleClass,object,EventArgs>weak=newWeakEventListener<SampleClass,object,EventArgs>(sample);weak.OnEventAction=(instance,source,eventArgs)=>{isOnEventTriggered=true;};weak.OnDetachAction=(listener)=>{isOnDetachTriggered=true;};sample.Raisevent+=weak.OnEvent;sample.DoSomething();Assert.True(isOnEventTriggered);weak.Detach();Assert.True(isOnDetachTriggered);}

With thanks to

About

The WeakEventListener allows the owner to be garbage collected if its only remaining link is an event handler.

Topics

Resources

Stars

25 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages