ChangeMonitor.Dispose メソッド

定義

ChangeMonitor クラスの現在のインスタンスによって使用されているすべてのリソースを解放します。

オーバーロード

Dispose()

ChangeMonitor クラスの現在のインスタンスによって使用されているすべてのリソースを解放します。

Dispose(Boolean)

すべてのマネージド リソースおよびアンマネージド リソースと、ChangeMonitor インスタンスへのすべての参照を解放します。 このオーバーロードは、変更監視クラスの派生クラスで実装する必要があります。

注釈

メソッド Dispose は、インスタンスと関連リソース ChangeMonitor を解放するために使用されます。 パブリック メソッドが呼び出され、派生した変更監視クラス (初期化など) の主要なライフサイクル イベントと廃棄プロセスを調整し、インスタンスを解放してインスタンスをガベージ コレクションできます Dispose ChangeMonitor 。 メソッドは、マネージド リソースとアンマネージド リソースを破棄するために、派生した変更モニター クラス Dispose によって実装されます。

Dispose()

ChangeMonitor クラスの現在のインスタンスによって使用されているすべてのリソースを解放します。

public:
 virtual void Dispose();
public void Dispose ();
abstract member Dispose : unit -> unit
override this.Dispose : unit -> unit
Public Sub Dispose ()

実装

例外

Dispose() メソッドを呼び出した変更監視派生クラスで初期化が完了していません。

注釈

メソッドは、最初に呼び出された場合に、派生クラスの メソッドを 1 回 Dispose Dispose だけ呼び出します。 メソッドの後続の Dispose 呼び出しは効果がありません。 メソッドが呼び出された後、 プロパティ IsDisposed は に設定されます true

インスタンス Dispose を破棄するには、 オーバーロードを呼び出す必要 ChangeMonitor があります。 dispose メソッドを呼び出す規則を次に示します。

  • 項目がキャッシュに挿入される前に、呼び出し元がインスタンスを破棄する必要 ChangeMonitor があります。

  • キャッシュ項目とそれに関連付けられているインスタンスがキャッシュに渡された後、挿入が失敗した場合でも、 が呼び出される必要があるキャッシュ実装 ChangeMonitor Dispose 者。

  • 項目とその関連インスタンスがキャッシュに渡された後、呼び出し元は依存関係を破棄することはできません。これは、 メソッドが呼び出された場合、呼び出しは依存関係が変更された場合と同様に扱われるためです ChangeMonitor Dispose 。 その結果、 メソッド OnChanged が自動的に呼び出されます。

  • これらの規則を考慮して、 Dispose メソッドは次のいずれかの方法で呼び出す必要があります。

    • 派生変更モニター インスタンスをキャッシュに挿入しない場合、ユーザーはメソッド オーバーロードを呼 Dispose び出す必要があります。

    • キャッシュの実装は、実装が変更モニター インスタンスをオブジェクト キャッシュに挿入しようとしても挿入が失敗した場合に、 オーバーロードを呼び出 Dispose します。 挿入の試行で例外が発生した場合、キャッシュの実装では、関連付けられている依存関係を破棄する必要があります。

    • キャッシュ エントリが削除された場合、キャッシュの実装でも依存関係を破棄する必要があります。

メソッドの内部実装は、 メソッドを介して登録されたコールバックを呼び出した後、メソッド OnChanged Dispose を自動的に呼び出 NotifyOnChanged します。

注意

イベントの発生中にこの自動破棄が行われるのは、インスタンスの初期化が以前に完了 ChangeMonitor した場合のみです。

派生変更モニターのコンストラクターが メソッドを呼び出す場合、変更モニターの状態が既に変更されている場合 (つまり、コンストラクターがまだアクティブなときに監視されている状態が既に変更されている InitializationComplete 場合)、メソッドは変更モニターを自動的に破棄します。 InitializationComplete

注意

ユーザーは メソッドを呼び出 Dispose す必要があります。 ただし、ユーザーが メソッドを呼び出すのを防ぐすることはできません。 そのため、呼び出された場合は OnChanged 、 メソッドが呼び出されます。 その場合、キャッシュ エントリは依存関係が変更された場合と同様に通知されます。

派生クラスでメソッドがオーバーライド Dispose されるのを防ぐために、 メソッドは明示的なインターフェイス実装ではありません。

こちらもご覧ください

適用対象

Dispose(Boolean)

すべてのマネージド リソースおよびアンマネージド リソースと、ChangeMonitor インスタンスへのすべての参照を解放します。 このオーバーロードは、変更監視クラスの派生クラスで実装する必要があります。

protected:
 abstract void Dispose(bool disposing);
protected abstract void Dispose (bool disposing);
abstract member Dispose : bool -> unit
Protected MustOverride Sub Dispose (disposing As Boolean)

パラメーター

disposing
Boolean

マネージド リソース、アンマネージド リソース、および ChangeMonitor インスタンスへのすべての参照を解放する場合は true。アンマネージド リソースのみを解放する場合は falsefalseを渡すと、Dispose(Boolean) メソッドが finalizer スレッドによって呼び出されますが、すべての外部マネージド参照は既にガベージ コレクトされているため、有効ではなくなっている可能性があります。

注釈

値が の場合、すべてのマネージド リソースとアンマネージド リソースが破棄され、このオブジェクトへの参照はすべて解放され、派生変更モニター インスタンスをガベージ コレクション disposing true できます。 基本メソッドは、実装されたメソッド Dispose を 1 回だけ呼び Dispose 出す必要があります。

注意 (実装者)

の値が の場合、すべてのマネージド リソースとアンマネージド リソースを解放するには、変更モニターで オーバーロード Dispose(Boolean) を実装する disposing 必要があります true 。 の値を持つメソッド オーバーロードは、インスタンスが初めて破棄される場合に 1 回だけ呼 Dispose(Boolean) disposing true び出されます。 変更モニターは、オーバーロードを直接呼び Dispose(Boolean) 出す必要があります。 派生変更モニターは、基本クラスのパブリック パラメーターレス Dispose() メソッドを呼び出 ChangeMonitor します。

または、変更モニターでファイナライザー メソッドを実装できます。 その場合、ファイナライザーは メソッドを呼び Dispose(Boolean) 出し、 の値を disposing 渡します false 。 ただし、これは通常は不要です。 依存関係の変更の監視は、通常、変更監視インスタンスへの参照を保持するサービスによって実行されます。 参照により、インスタンスがガベージ コレクションされるのを防ぐため、ファイナライザー メソッドは不要になります。 メモリ リークを回避するために、依存関係が変更された場合、メソッドは変更モニター インスタンスを破棄します (初期化が完了していない場合を OnChanged(Object) 含む)。

適用対象