ChangeMonitor クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
キャッシュ アイテムが依存するデータの状態の変化を監視する、派生したカスタム型の基本クラスを提供します。
public ref class ChangeMonitor abstract : IDisposable
public abstract class ChangeMonitor : IDisposable
type ChangeMonitor = class
interface IDisposable
Public MustInherit Class ChangeMonitor
Implements IDisposable
- 継承
-
ChangeMonitor
- 派生
- 実装
注釈
クラス ChangeMonitor は、特定のキャッシュ実装に特化した派生モニター クラスの基本クラスとして使用されます。 インスタンス ChangeMonitor は、キャッシュ項目が依存するデータの状態の変化を監視します。 たとえば、項目には、コンテンツがキャッシュされるファイルまたはデータ エンティティを指定できます。 ファイルまたはデータ エンティティが更新された場合は、関連付けられているキャッシュ エントリも変更する必要があります。 監視できる一般的な項目には、データ エンティティ (データベース フィールド、値、行、テーブルなど)、別のキャッシュ エントリ、ファイルとファイル属性が含まれます。
依存関係の変更は、依存関係の状態の変更です。 一般的なキャッシュ実装では、インスタンスが依存関係が変更されたとキャッシュに通知した後、キャッシュは、挿入されたキャッシュ エントリの無効化など、必要なアクションを ChangeMonitor 実行します。
派生クラス ChangeMonitor は、特定の異なるデータ ストアの依存関係の変更を監視するためにカスタマイズできます。 たとえば、ファイル システム、物理メモリ、またはデータベースのキャッシュ実装があります。 クラス ChangeMonitor は、キャッシュの外部で発生した変更を調べ、変更が発生したキャッシュに警告します。
次.NET Frameworkクラスから派生する次のクラスが含 ChangeMonitor まれています。
これらの各クラスは、さまざまな種類の依存関係で動作します。 たとえば、派生クラスは、キャッシュ項目が依存するファイル システム データ (ファイルとフォルダー) のキャッシュへの変更 FileChangeMonitor を監視します。
注意 (実装者)
カスタム キャッシュ実装または派生変更モニターの種類を作成する場合は、特定のガイドラインに従う必要があります。 これらのガイドラインの概要を次に示します。 詳細については、個々のメソッドまたはプロパティに関するドキュメントを参照してください。
派生クラスのコンストラクターは、メソッドが戻る前に、 プロパティを設定し、監視を開始し、メソッド UniqueId InitializationComplete() を呼び出す必要があります。 コンストラクターで構築中にエラーが発生し、リソースを破棄する必要がある場合、コンストラクターはメソッドの呼び出し後にのみオーバーロードを呼び出すことができます。これは、初期化が完了していない場合にオーバーロードによって例外がスローされるためです。 Dispose InitializationComplete() Dispose InvalidOperationException
初期化が完了する前に監視されているデータで変更が発生した場合、コンストラクターは メソッドを呼び出す前に メソッド OnChanged(Object) を呼び出す必要 InitializationComplete() があります。
派生型がインスタンス ChangeMonitor 化された後、カスタム実装にモニターを挿入する必要 ObjectCache があります。 または、変更モニターの使用が完了した場合は、 メソッドを呼び出 Dispose します。
インスタンスを実装に挿入した後、インスタンス ChangeMonitor ObjectCache は変更 ObjectCache モニターを破棄する必要があります。 挿入が無効で例外が発生した場合でも、実装は オーバーロード ObjectCache を呼び出す必要 Dispose があります。
派生変更モニターがキャッシュに挿入された後、実装は オブジェクトを渡して を呼 ObjectCache NotifyOnChanged(OnChangedCallback) び出す必要 OnChangedCallback があります。 メソッド NotifyOnChanged(OnChangedCallback) を呼び出すのは 1 回のみです。 依存関係の変更が既に発生している場合、 が呼び出された場合、インスタンス OnChangedCallback はすぐに NotifyOnChanged(OnChangedCallback) 呼び出されます。 それ以外の場合、 OnChangedCallback インスタンスは 1 回だけ呼び出されます。 この 1 回の呼び出しは、インスタンスが変更を検出した理由でメソッドが呼び出された場合、または でメソッドが呼び出された場合のいずれか最初に発生した場合 OnChanged(Object) ChangeMonitor Dispose() ChangeMonitor に発生します。
実装によって提供される インスタンスは、関連付けられているキャッシュ エントリを削除し、 列挙体を使用して理由 OnChangedCallback ObjectCache を指定する必要 DependencyChanged があります。
インスタンスは、キャッシュ実装が メソッドを呼び出す前または後に ChangeMonitor OnChanged(Object) NotifyOnChanged(OnChangedCallback) メソッドを呼び出す可能性があります。 メソッドが呼び出される前に メソッドが呼び出されると、基本実装は、これが発生したとキャッシュに通知し、コールバックが呼び出されるとすぐに に渡されます OnChanged(Object) NotifyOnChanged(OnChangedCallback) ChangeMonitor NotifyOnChanged(OnChangedCallback) NotifyOnChanged(OnChangedCallback) 。 メソッドに渡された状態データは、変更モニターによって保存され、その後、メソッドが呼び出されると OnChanged(Object) NotifyOnChanged(OnChangedCallback) NotifyOnChanged(OnChangedCallback) メソッドに渡されます。
変更モニターは、 メソッドを実装する必要 Dispose(Boolean) があります。 詳細については、Dispose(Boolean) メソッドのドキュメントを参照してください。
インスタンス Dispose() を破棄するには、メソッド オーバーロードを呼び出す必要 ChangeMonitor があります。 Dispose を呼び出す規則は次のとおりです。
項目がキャッシュに挿入される前に、呼び出し元がインスタンスを破棄する必要 ChangeMonitor があります。
キャッシュ項目とそれに関連付けられているインスタンスがキャッシュに渡された後、挿入が失敗した場合でも、キャッシュ実装者は メソッドが呼び出される必要 ChangeMonitor Dispose があります。
項目とその関連インスタンスがキャッシュに渡された後、呼び出し元は依存関係を破棄することはできません。これは、 メソッドが呼び出された場合、呼び出しは依存関係が変更された場合と同様に扱われるためです ChangeMonitor Dispose 。 その結果、 メソッド OnChanged(Object) が自動的に呼び出されます。
これらの規則を考慮して、 Dispose メソッドは次のいずれかの方法で呼び出す必要があります。
派生した change-monitor インスタンスをキャッシュに挿入しない場合、ユーザーはメソッド オーバーロードを呼 Dispose() び出す必要があります。
実装がオブジェクト キャッシュに変更モニター インスタンスを挿入しようとしても挿入が失敗した場合、キャッシュ実装はオーバーロードを呼び出します Dispose() 。 挿入の試行で例外が発生した場合、キャッシュの実装では、関連付けられている依存関係を破棄する必要があります。
キャッシュ エントリが削除された場合、キャッシュの実装でも依存関係を破棄する必要があります。
メソッドの内部実装は、 を介して登録されたコールバックを呼び出した後、メソッド OnChanged(Object) Dispose を自動的に呼び出します NotifyOnChanged(OnChangedCallback) 。
注: イベントの発生中に dispose メソッドに対するこの自動呼び出しは、インスタンスの初期化が以前に完了した場合 ChangeMonitor にのみ発生します。
派生変更モニターのコンストラクターが メソッドを呼び出す場合、変更モニターの状態が既に変更されている場合 (つまり、コンストラクターがまだアクティブなときに監視されている状態が既に変更されている InitializationComplete() 場合)、メソッドは変更モニターを自動的に破棄します。 InitializationComplete()
- メソッドの呼び出しによってオブジェクトが設定されたかどうかに関係なく、 プロパティは、派生変更モニター インスタンスによってメソッドが呼び出された後に に HasChanged
trueOnChanged(Object) OnChangedCallback NotifyOnChanged(OnChangedCallback) 設定されます。
コンストラクター
| ChangeMonitor() |
ChangeMonitor クラスの新しいインスタンスを初期化します。 このコンストラクターは、派生クラスのコンストラクターから呼び出されて基本クラスを初期化します。 |
プロパティ
| HasChanged |
ChangeMonitor クラスによって監視されている状態が変更されたことを示す値を取得します。 |
| IsDisposed |
ChangeMonitor クラスの派生インスタンスが破棄されたことを示す値を取得します。 |
| UniqueId |
ChangeMonitor クラスのインスタンスを表す値を取得します。 |
メソッド
| Dispose() |
ChangeMonitor クラスの現在のインスタンスによって使用されているすべてのリソースを解放します。 |
| Dispose(Boolean) |
すべてのマネージド リソースおよびアンマネージド リソースと、ChangeMonitor インスタンスへのすべての参照を解放します。 このオーバーロードは、変更監視クラスの派生クラスで実装する必要があります。 |
| Equals(Object) |
指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。 (継承元 Object) |
| GetHashCode() |
既定のハッシュ関数として機能します。 (継承元 Object) |
| GetType() |
現在のインスタンスの Type を取得します。 (継承元 Object) |
| InitializationComplete() |
派生クラスのコンストラクターから呼び出され、初期化が完了したことを示します。 |
| MemberwiseClone() |
現在の Object の簡易コピーを作成します。 (継承元 Object) |
| NotifyOnChanged(OnChangedCallback) |
コールバックを登録し、依存関係が変化したときに ObjectCache デリゲートを通して OnChangedCallback インスタンスに通知するために、キャッシュの実装側によって呼び出されます。 |
| OnChanged(Object) |
依存関係が変更されたときに、イベントを発生させるために派生クラスによって呼び出されます。 |
| ToString() |
現在のオブジェクトを表す文字列を返します。 (継承元 Object) |
適用対象
スレッド セーフ
この型はスレッド セーフです。