次の方法で共有


ChangeMonitor.Dispose メソッド

定義

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

オーバーロード

Dispose()

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

Dispose(Boolean)

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

注釈

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

Dispose()

ソース:
ChangeMonitor.cs
ソース:
ChangeMonitor.cs
ソース:
ChangeMonitor.cs

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

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

実装

例外

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

注釈

メソッドは Dispose 、最初に Dispose 呼び出されたときに、派生クラスのメソッドを 1 回だけ呼び出します。 メソッドの後続の 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.cs
ソース:
ChangeMonitor.cs
ソース:
ChangeMonitor.cs

すべてのマネージド リソースおよびアンマネージド リソースと、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 スレッドによって呼び出されますが、すべての外部マネージド参照は既にガベージ コレクトされているため、有効ではなくなっている可能性があります。

注釈

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

注意 (実装者)

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

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

適用対象