WeakEventManager Class (System.Windows)

Switch View :
ScriptFree
.NET Framework Class Library
WeakEventManager Class

[This documentation is for preview only, and is subject to change in later releases. Blank topics are included as placeholders.]

Provides a base class for the event manager that is used in the weak event pattern. The manager adds and removes listeners for events (or callbacks) that also use the pattern.

Inheritance Hierarchy

System.Object
  System.Windows.Threading.DispatcherObject
    System.Windows.WeakEventManager
      More...

Namespace:  System.Windows
Assembly:  WindowsBase (in WindowsBase.dll)
Syntax

Visual Basic

Public MustInherit Class WeakEventManager _
	Inherits DispatcherObject
C#

public abstract class WeakEventManager : DispatcherObject
Visual C++

public ref class WeakEventManager abstract : public DispatcherObject
F#

[<AbstractClass>]
type WeakEventManager =  
    class
        inherit DispatcherObject
    end

The WeakEventManager type exposes the following members.

Constructors

  Name Description
Protected method WeakEventManager Initializes base class values when it is used as the initializer by the constructor of a derived class.
Top
Properties

  Name Description
Public property Dispatcher Gets the Dispatcher this DispatcherObject is associated with. (Inherited from DispatcherObject.)
Protected property Item Gets or sets the data being stored for the specified source.
Protected property ReadLock Establishes a read-lock on the underlying data table, and returns an IDisposable.
Protected property WriteLock Establishes a write-lock on the underlying data table, and returns anIDisposable.
Top
Methods

  Name Description
Public method CheckAccess Determines whether the calling thread has access to this DispatcherObject. (Inherited from DispatcherObject.)
Protected method DeliverEvent Delivers the event being managed to each listener.
Protected method DeliverEventToList Delivers the event being managed to each listener in the provided list.
Public method Equals(Object) Determines whether the specified Object is equal to the current Object. (Inherited from Object.)
Protected method Finalize Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.)
Protected method Static member GetCurrentManager Returns the WeakEventManager implementation that is used for the provided type.
Public method GetHashCode Serves as a hash function for a particular type. (Inherited from Object.)
Public method GetType Gets the Type of the current instance. (Inherited from Object.)
Protected method MemberwiseClone Creates a shallow copy of the current Object. (Inherited from Object.)
Protected method NewListenerList Returns a new object to contain listeners to an event.
Protected method ProtectedAddHandler Adds the specified delegate as an event handler of the specified source.
Protected method ProtectedAddListener Adds the provided listener to the provided source for the event being managed.
Protected method ProtectedRemoveHandler Removes the previously added handler from the specified source.
Protected method ProtectedRemoveListener Removes a previously added listener from the provided source.
Protected method Purge Removes inactive listener entries from the data list for the provided source. Returns true if some entries were actually removed from the list.
Protected method Remove Removes all listeners for the specified source.
Protected method ScheduleCleanup Requests that a purge of unused entries in the underlying listener list be performed on a lower priority thread.
Protected method Static member SetCurrentManager Sets the current manager for the specified manager type.
Protected method StartListening When overridden in a derived class, starts listening for the event being managed. After the StartListening method is first called, the manager should be in the state of calling DeliverEvent or DeliverEventToList whenever the relevant event from the provided source is handled.
Protected method StopListening When overridden in a derived class, stops listening on the provided source for the event being managed.
Public method ToString Returns a string that represents the current object. (Inherited from Object.)
Public method VerifyAccess Enforces that the calling thread has access to this DispatcherObject. (Inherited from DispatcherObject.)
Top
Remarks

You typically use the weak event pattern when the event source has an object lifetime that is independent of the event listeners. Using the central event dispatching capability of a WeakEventManager allows the listener's handlers to be garbage collected even if the source object persists. By contrast, a regular event hookup using the += operator causes the potentially disconnected source to hold a reference to the listeners. This prevents the receiver from being garbage collected in a timely fashion.

One common situation where the lifetime relationships between sources and listeners should use of the weak event pattern is the handling of update events coming from data bindings.

The weak event pattern can also be used for callbacks and regular events.

Notes to Inheritors

For an example of a custom WeakEventManager, see Weak Event Patterns.

Version Information

.NET Framework

Supported in: 4.5, 4, 3.5, 3.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1
Platforms

Windows 8 Release Preview, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 SP2, Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Thread Safety

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
See Also

Reference

Other Resources

Inheritance Hierarchy

System.Object
  System.Windows.Threading.DispatcherObject
    System.Windows.WeakEventManager
      System.Collections.Specialized.CollectionChangedEventManager
      System.ComponentModel.CurrentChangedEventManager
      System.ComponentModel.CurrentChangingEventManager
      System.ComponentModel.ErrorsChangedEventManager
      System.ComponentModel.PropertyChangedEventManager
      System.Windows.Data.DataChangedEventManager
      System.Windows.Input.CanExecuteChangedEventManager
      System.Windows.LostFocusEventManager
      System.Windows.WeakEventManager<TEventSource, TEventArgs>