Maintains a list of event handlers through weak references.
WeakEvent is intended for use as the backing storage for an event. Note that WeakEvents invoke handlers through reflection and so are slower than standard events. A WeakEvent is intended for cases where leaks are especially likely to occur, such as for events published from a singleton object.
Example code for the publishing class:
class MyClass { public event EventHandler MyEvent { add { WeakMyEvent.AddHandler(value) }; remove { WeakMyEvent.RemoveHandler(value) }; } protected virtual void OnMyEvent(EventArgs e) { WeakMyEvent.Raise(this, e); } private readonly WeakEvent WeakMyEvent = new WeakEvent(); }
Event listeners add and remove themselves from such events as they would for any standard event.
Public Member Functions |
|
void | AddHandler (Delegate handler) |
Add a handler, maintained by weak reference,
to the list of event handlers for this event. |
|
void | RemoveHandler (Delegate handler) |
Remove an event handler from this event.
|
|
void | Raise (Object sender, Object args) |
Raise this event, triggering any registered
event handlers whose WeakReferences have not been collected.
|
void CSharpUtilities::WeakEvent::AddHandler | ( | Delegate | handler | ) | [inline] |
Add a handler, maintained by weak reference, to the list of event handlers for this event.
handler | Event handler |
void CSharpUtilities::WeakEvent::RemoveHandler | ( | Delegate | handler | ) | [inline] |
Remove an event handler from this event.
handler | Event handler |
void CSharpUtilities::WeakEvent::Raise | ( | Object | sender, |
Object | args | ||
) | [inline] |
Raise this event, triggering any registered event handlers whose WeakReferences have not been collected.
sender | Source object for this event. |
args | Information about the event. |