The WindowsBase DLL defines the IWeakEventListener event with summary:
Provides event listening support for classes that expect to receive events through the WeakEvent pattern and a System.Windows.WeakEventManager.
This vague description doesn't describe what the 'WeakEvent pattern' actually is.
So, what is this pattern, why is it used and is it useful outside of WPF applications?
EDIT Some good answers already, but no one has talked about whether this pattern is useful outside of WPF applications. It seems to me that the weak event pattern, like dependency properties, is inextricably linked to the WPF APIs and DLLs. Is there an equivalent implementation available for non-WPF applications?
The important bit is in the remarks:
So if you have
publisherandsubscriberobjects, then normally aftersubscriberhas subscribed topublisher's event,subscribercan't be garbage collected. The weak event pattern makes the link between the two "weak" (as in WeakReference) so that there isn't this dependency. (The alternative is to unsubscribe from the event whensubscriberwants to become eligible for garbage collection, but that gets messy.)