Table of contents
Introduction
What exactly are events?
Part 1: Listener-side weak events
Solution 0: Just deregister
Solution 1: Deregister when the event is called
Solution 2: Wrapper with weak reference
Solution 3: Deregister in finalizer
Solution 4: Reusable wrapper
Solution 5: WeakEventManager
Part 2: Source-side weak events
Solution 0: Interface
Solution 1: WeakReference to delegate
Solution 2: object + Forwarder
Solution 3: SmartWeakEvent
Solution 4: FastSmartWeakEvent
Suggestions
Introduction
When using normal C# events, registering an event handler creates a strong reference from the event source to the listening object.
Introduction
What exactly are events?
Part 1: Listener-side weak events
Solution 0: Just deregister
Solution 1: Deregister when the event is called
Solution 2: Wrapper with weak reference
Solution 3: Deregister in finalizer
Solution 4: Reusable wrapper
Solution 5: WeakEventManager
Part 2: Source-side weak events
Solution 0: Interface
Solution 1: WeakReference to delegate
Solution 2: object + Forwarder
Solution 3: SmartWeakEvent
Solution 4: FastSmartWeakEvent
Suggestions
Introduction
When using normal C# events, registering an event handler creates a strong reference from the event source to the listening object.

