WeakEventManager クラス


弱いイベント パターンで使用されるイベント マネージャーの基本クラスです。Provides a base class for the event manager that is used in the weak event pattern. このマネージャーは、WeakEvent パターンを使用するイベント (またはコールバック) 用のリスナーを追加または削除します。The manager adds and removes listeners for events (or callbacks) that also use the pattern.

public ref class WeakEventManager abstract : System::Windows::Threading::DispatcherObject
public abstract class WeakEventManager : System.Windows.Threading.DispatcherObject
type WeakEventManager = class
    inherit DispatcherObject
Public MustInherit Class WeakEventManager
Inherits DispatcherObject


イベントリスナーに依存しないオブジェクトの有効期間がイベントソースにある場合は、通常、弱いイベントパターンを使用します。You typically use the weak event pattern when the event source has an object lifetime that is independent of the event listeners. WeakEventManager の中心的なイベントディスパッチ機能を使用すると、ソースオブジェクトが永続化されていてもリスナーのハンドラーをガベージコレクションできます。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.

ソースとリスナー間の有効期間の関係が弱いイベントパターンを使用する必要がある一般的な状況の1つは、データバインディングからの更新イベントの処理です。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.

注意 (実装者)

カスタム WeakEventManagerの例については、「弱いイベントパターン」を参照してください。For an example of a custom WeakEventManager, see Weak Event Patterns.



派生クラスのコンストラクターによって初期化子として使用されると、基本クラスの値を初期化します。Initializes base class values when it is used as the initializer by the constructor of a derived class.



この Dispatcher が関連付けられている DispatcherObject を取得します。Gets the Dispatcher this DispatcherObject is associated with.

(継承元 DispatcherObject)

指定したソース用に格納されているデータを取得または設定します。Gets or sets the data being stored for the specified source.


基になるデータ テーブルで読み取りロックを確立し、IDisposable を返します。Establishes a read-lock on the underlying data table, and returns an IDisposable.


基になるデータ テーブルで書き込みロックを確立し、IDisposable を返します。Establishes a write-lock on the underlying data table, and returns an IDisposable.



呼び出し元のスレッドがこの DispatcherObject にアクセスできるかどうかを確認します。Determines whether the calling thread has access to this DispatcherObject.

(継承元 DispatcherObject)
DeliverEvent(Object, EventArgs)

管理対象のイベントを各リスナーに配信します。Delivers the event being managed to each listener.

DeliverEventToList(Object, EventArgs, WeakEventManager+ListenerList)

管理対象のイベントを、指定されたリスト内の各リスナーに配信します。Delivers the event being managed to each listener in the provided list.


指定したオブジェクトが、現在のオブジェクトと等しいかどうかを判断します。Determines whether the specified object is equal to the current object.

(継承元 Object)

指定された型に使用される WeakEventManager 実装を返します。Returns the WeakEventManager implementation that is used for the provided type.


既定のハッシュ関数として機能します。Serves as the default hash function.

(継承元 Object)

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

(継承元 Object)

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(継承元 Object)

イベントのリスナーを格納する新しいオブジェクトを返します。Returns a new object to contain listeners to an event.

ProtectedAddHandler(Object, Delegate)

指定されたソースのイベント ハンドラーとして指定したデリゲートを追加します。Adds the specified delegate as an event handler of the specified source.

ProtectedAddListener(Object, IWeakEventListener)

指定されたリスナーを、管理対象のイベントの指定されたソースに追加します。Adds the provided listener to the provided source for the event being managed.

ProtectedRemoveHandler(Object, Delegate)

指定したソースから、以前追加されたハンドラーを削除します。Removes the previously added handler from the specified source.

ProtectedRemoveListener(Object, IWeakEventListener)

以前に追加されたリスナーを指定されたソースから削除します。Removes a previously added listener from the provided source.

Purge(Object, Object, Boolean)

指定されたソースのデータ リストから、アクティブでないリスナー エントリを削除します。Removes inactive listener entries from the data list for the provided source. いくつかのエントリが実際にリストから削除された場合は、true を返します。Returns true if some entries were actually removed from the list.


指定したソースのリスナーをすべて削除します。Removes all listeners for the specified source.


基になるリスナー リストに含まれる未使用エントリの削除を、優先順位の低いスレッドで実行するように要求します。Requests that a purge of unused entries in the underlying listener list be performed on a lower priority thread.

SetCurrentManager(Type, WeakEventManager)

指定したマネージャーの種類に対する現在のマネージャーを設定します。Sets the current manager for the specified manager type.


派生クラスでオーバーライドされると、管理対象のイベントのリッスンを開始します。When overridden in a derived class, starts listening for the event being managed. StartListening(Object) メソッドが初めて呼び出された後、マネージャーは、提供されたソースからの関連イベントを処理するたびに、DeliverEvent(Object, EventArgs) または DeliverEventToList(Object, EventArgs, WeakEventManager+ListenerList) を呼び出している状態になる必要があります。After the StartListening(Object) method is first called, the manager should be in the state of calling DeliverEvent(Object, EventArgs) or DeliverEventToList(Object, EventArgs, WeakEventManager+ListenerList) whenever the relevant event from the provided source is handled.


派生クラスでオーバーライドされると、指定されたソースで管理対象のイベントのリッスンを停止します。When overridden in a derived class, stops listening on the provided source for the event being managed.


現在のオブジェクトを表す文字列を返します。Returns a string that represents the current object.

(継承元 Object)

呼び出し元のスレッドがこの DispatcherObject にアクセスできるように強制します。Enforces that the calling thread has access to this DispatcherObject.

(継承元 DispatcherObject)