ChangeMonitor ChangeMonitor ChangeMonitor ChangeMonitor Class


キャッシュ アイテムが依存するデータの状態の変化を監視する、派生したカスタム型の基本クラスを提供します。Provides a base class for a derived custom type that monitors changes in the state of the data which a cache item depends on.

public ref class ChangeMonitor abstract : IDisposable
public abstract class ChangeMonitor : IDisposable
type ChangeMonitor = class
    interface IDisposable
Public MustInherit Class ChangeMonitor
Implements IDisposable


ChangeMonitorクラスは、特定のキャッシュの実装のために特化したモニターの派生クラスの基底クラスとして使用します。The ChangeMonitor class is used as the base class for derived monitor classes that are specialized for particular cache implementations. AChangeMonitorインスタンスはキャッシュ アイテムが依存するデータの状態の変化を監視します。A ChangeMonitor instance monitors changes in the state of data which a cache item depends on. たとえば、アイテムには、内容がキャッシュされているファイルやデータ エンティティができます。For example, the item can be a file or data entity whose contents are cached. ファイルまたはデータのエンティティが更新された場合も、関連付けられているキャッシュ エントリを変更する必要があります。If the file or data entity is updated, the associated cache entry must be changed also. 監視できる共通の項目には、データ エンティティ (データベース フィールド、値、行、またはテーブル) など、別のキャッシュ エントリとファイルおよびファイル属性が含まれます。Common items that can be monitored include data entities (such as database fields, values, rows, or tables), another cache entry, and files and file attributes.

依存関係の変更は、依存関係の状態の変更です。A dependency change is a change in the state of a dependency. 一般的なキャッシュの実装で後に、ChangeMonitorインスタンス キャッシュ依存関係が変更されたことを通知する、キャッシュが挿入されたキャッシュ エントリを無効化など、必要なアクションを実行します。In a typical cache implementation, after a ChangeMonitor instance notifies the cache that a dependency has changed, the cache performs the required action, such as invalidating the inserted cache entry.

派生ChangeMonitor固有のさまざまなデータ ストアの依存関係の変更を監視するクラスをカスタマイズできます。Derived ChangeMonitor classes can be customized to monitor dependency changes for specific different data stores. たとえば、ファイル システム、物理メモリ、またはデータベースのキャッシュ実装があります。For example, there are cache implementations for a file system, physical memory, or a database. ChangeMonitorクラスは、アラートの変更が発生したキャッシュ調べ、キャッシュの外部で発生する変更。The ChangeMonitor class examines changes that occur outside the cache, and then alerts the cache that changes have occurred.

.NET Framework.NET Frameworkから派生する次のクラスが含まれますChangeMonitorクラス。The .NET Framework.NET Framework includes the following classes that derive from ChangeMonitor class:

これらの各クラスは、さまざまな種類の依存関係と連携します。Each of these classes works with different types of dependencies. たとえば、派生FileChangeMonitorクラスは、キャッシュ項目が依存しているファイル システム データ (ファイルとフォルダー) のキャッシュへの変更を監視します。For example, the derived FileChangeMonitor class monitors changes to a cache for file system data (files and folders) that the cache item depends on.

注意 (継承者)

カスタムを作成する場合は、キャッシュの実装や派生の変更モニターの種類、特定のガイドラインに従う必要があります。If you create a custom cache implementation or a derived change monitor type, you must follow certain guidelines. 次の一覧は、次のガイドラインをまとめたものです。The following list summarizes these guidelines. 詳細については、個々 のメソッドまたはプロパティのドキュメントを参照してください。For more information, see the documentation for individual methods or properties.

派生クラスのコンス トラクターを設定する必要があります、UniqueIdプロパティの監視を開始し、呼び出すInitializationComplete()メソッド、メソッドが戻る前にします。- The constructor of a derived class must set the UniqueId property, begin monitoring, and call InitializationComplete() method before the method returns. コンス トラクターを呼び出すことができますのみコンス トラクターは、構築中にエラーが発生し、リソースを破棄する必要がある場合、Disposeオーバー ロードの後に、InitializationComplete()ため、メソッドが呼び出された、Disposeオーバー ロードがスローされます、 InvalidOperationException初期化が完了していない場合は例外です。If a constructor encounters an error during constructions and must have to dispose of resources, the constructor can only call the Dispose overload after the InitializationComplete() method is called because the Dispose overload will throw an InvalidOperationException exception if initialization is not completed.

-初期化する前に監視されているデータが完了に変更が発生した場合は、コンス トラクターを呼び出す必要があります、OnChanged(Object)メソッドを呼び出す前に、InitializationComplete()メソッド。- If changes occur in the data that is being monitored before initialization is complete, the constructor must call the OnChanged(Object) method before calling the InitializationComplete() method.

-後派生ChangeMonitor型がインスタンス化される、カスタムにモニターを挿入する必要がありますObjectCache実装します。- After a derived ChangeMonitor type is instantiated, you must insert the monitor into a custom ObjectCache implementation. 変更の監視を使用して完了した場合、または、Disposeメソッド。Or if you are finished using the change monitor, call the Dispose method.

-後、ChangeMonitorインスタンスが挿入、 ObjectCache 、実装、ObjectCacheインスタンスは、変更の監視が破棄されたことが必要です。- After a ChangeMonitor instance is inserted into a ObjectCache implementation, the ObjectCache instance require that the change monitor is disposed. カーソルが無効であり、例外が発生した場合でも、ObjectCache実装を呼び出す必要があります、Disposeオーバー ロードします。Even if the insertion is invalid and causes an exception, the ObjectCache implementation must call the Dispose overload.

-派生変更監視機能が、キャッシュに挿入された後、ObjectCache実装を呼び出す必要がありますNotifyOnChanged(OnChangedCallback)を渡すことによって、OnChangedCallbackオブジェクト。- After a derived change monitor is inserted into a cache, the ObjectCache implementation must call NotifyOnChanged(OnChangedCallback), by passing a OnChangedCallback object. NotifyOnChanged(OnChangedCallback)メソッドは、1 回だけ呼び出すことができます。The NotifyOnChanged(OnChangedCallback) method can be called only one time. 依存関係の変更が既に発生している場合、OnChangedCallbackインスタンスがすぐに呼び出されるときにNotifyOnChanged(OnChangedCallback)が呼び出されます。If a dependency change has already occurred, the OnChangedCallback instance will be called immediately when NotifyOnChanged(OnChangedCallback) is called. それ以外の場合、OnChangedCallbackインスタンスは 1 回だけ呼び出されます。Otherwise, the OnChangedCallback instance will be called only one time. この 1 回の呼び出しが発生したかときに、OnChanged(Object)ため、メソッドが呼び出された、ChangeMonitorインスタンスには、変更が検出されたとき、または、Dispose()でメソッドが呼び出さ、 ChangeMonitor、か早い方。This one time call occurs either when the OnChanged(Object) method is called because the ChangeMonitor instance detected a change, or when the Dispose() method is called on the ChangeMonitor, whichever occurs first.

-OnChangedCallbackインスタンスによって提供される、ObjectCache実装が関連付けられているキャッシュ エントリの削除し、を使用して、理由を指定する必要があります、DependencyChanged列挙体。- The OnChangedCallback instance that is provided by an ObjectCache implementation should remove the associated cache entry and specify a reason by using the DependencyChanged enumeration.

は、ChangeMonitorインスタンスで呼び出すことができます、OnChanged(Object)メソッド キャッシュ実装が呼び出される前にいずれかNotifyOnChanged(OnChangedCallback)メソッド以降。- A ChangeMonitor instance can call the OnChanged(Object) method either before a cache implementation has called NotifyOnChanged(OnChangedCallback) method or after. 場合、OnChanged(Object)メソッドは、前に呼び出されますNotifyOnChanged(OnChangedCallback)が呼び出され、基本ChangeMonitor実装は、この問題が発生しているキャッシュへの通知し、に渡されるコールバックをトリガーするNotifyOnChanged(OnChangedCallback)とすぐにNotifyOnChanged(OnChangedCallback)が呼び出されます。If the OnChanged(Object) method is called before NotifyOnChanged(OnChangedCallback) is called, the base ChangeMonitor implementation will notify the cache that this has occurred and will trigger the callback to be passed to NotifyOnChanged(OnChangedCallback) immediately when NotifyOnChanged(OnChangedCallback) is invoked. 渡される任意の状態データ、OnChanged(Object)メソッドは変更の監視によって保存され、その後に渡される、NotifyOnChanged(OnChangedCallback)メソッドと、NotifyOnChanged(OnChangedCallback)メソッドが呼び出されます。Any state data that is passed to the OnChanged(Object) method is saved by the change monitor and subsequently passed to the NotifyOnChanged(OnChangedCallback) method when the NotifyOnChanged(OnChangedCallback) method is invoked.

の変更監視を実装する必要があります、Dispose(Boolean)メソッド。- A change monitor must implement the Dispose(Boolean) method. 詳細については、Dispose(Boolean) メソッドのドキュメントを参照してください。For more information, see the Dispose(Boolean) method documentation.

-Dispose()を破棄するメソッドのオーバー ロードを呼び出す必要があります、ChangeMonitorインスタンス。- The Dispose() method overload must be called to dispose of the ChangeMonitor instance. Dispose を呼び出す場合の規則は次のとおりです。The rules for calling Dispose are as follows: 破棄する呼び出し元の責任は、キャッシュに項目が前に、ChangeMonitorインスタンス。- Before an item is inserted into the cache, it is the responsibility of caller to dispose of a ChangeMonitor instance.

のキャッシュ項目 1 回、ChangeMonitorそれに関連付けられているインスタンスがキャッシュに渡される、キャッシュの実装側ように注意してください、Dispose挿入が失敗した場合でも、メソッドが呼び出されます。- Once cache item and the ChangeMonitor instances that are associated with it are passed to a cache, the cache implementer must make sure that the Dispose method is called, even if the insert fails.

-後の項目とそれに関連付けられたChangeMonitorインスタンスがキャッシュに渡される、ため、呼び出し元が、依存関係を破棄する必要があるときに、Disposeメソッドが呼び出されると、呼び出しが、依存関係が変更されたかのように扱われます。- After an item and its associated ChangeMonitor instances are passed to a cache, the caller must not dispose the dependency because when the Dispose method is called, the call is treated as if the dependency has changed. 結果として、OnChanged(Object)メソッドが自動的に呼び出されます。As a result, the OnChanged(Object) method is automatically invoked.

-これらの規則を考慮に入れて、Disposeメソッドは、次の方法のいずれかで呼び出す必要があります。- Taking these rules into consideration, the Dispose method must be called in one of the following ways: -ユーザーが呼び出す必要があります、Dispose()変更監視派生インスタンスをキャッシュに挿入する場合のメソッドのオーバー ロードします。- Users must call the Dispose() method overload if they decide not to insert the derived change-monitor instance into a cache.

のキャッシュ実装は呼び出し元場合、実装は、変更監視インスタンスをオブジェクト キャッシュに挿入しようとしていますが、挿入が失敗した、Dispose()オーバー ロードします。- If the implementation tries to insert the change-monitor instance into an object cache but the insertion fails, the cache implementation is responsible for calling the Dispose() overload. 挿入の試行では、例外が発生、関連付けられている依存関係のキャッシュの実装を破棄する必要があります。When the insertion attempt causes an exception, the cache implementation must dispose of any associated dependencies.

場合は、キャッシュ エントリを削除すると、キャッシュの実装が依存関係の dispose もする必要があります。- If the cache entry is removed, the cache implementation must also dispose of the dependency.

-内部実装のOnChanged(Object)メソッドが自動的に呼び出し、Dispose後に、コールバックを呼び出すことがを介して登録されたNotifyOnChanged(OnChangedCallback)- The internal implementation of the OnChanged(Object) method automatically calls the Dispose method after it calls a callback that is registered through NotifyOnChanged(OnChangedCallback).

この自動呼び出しイベントの発生時に、dispose メソッドには、場合にのみ発生の初期化、ChangeMonitorインスタンスが以前に完了しました。This automatic call to the dispose method during the event firing only occurs if the initialization of the ChangeMonitor instance was previously completed.

派生の変更モニターのコンス トラクターを呼び出すと、InitializationComplete()変更モニターの状態が既に変更されている場合、メソッド (コンス トラクターがまだアクティブなときに変更を既に監視されている状態)、InitializationComplete()メソッドには変更の監視を自動的に破棄します。When a derived change monitor's constructor calls the InitializationComplete() method, if the state of the change monitor has already changed (that is, the state that is monitored already changed when the constructor was still active) then the InitializationComplete() method will automatically dispose of the change monitor.

-HasChangedプロパティに設定されてtrue後、OnChanged(Object)メソッドかどうかに関係なく、変更監視派生インスタンスによって呼び出されます、OnChangedCallbackへの呼び出しによってオブジェクトが設定されている、NotifyOnChanged(OnChangedCallback)メソッドかどうか。- The HasChanged property is set to true after the OnChanged(Object) method is called by the derived change-monitor instance, regardless of whether a OnChangedCallback object has been set by a call to the NotifyOnChanged(OnChangedCallback) method or not.


ChangeMonitor() ChangeMonitor() ChangeMonitor() ChangeMonitor()

ChangeMonitor クラスの新しいインスタンスを初期化します。Initializes a new instance of the ChangeMonitor class. このコンストラクターは、派生クラスのコンストラクターから呼び出されて基本クラスを初期化します。This constructor is called from constructors in derived classes to initialize the base class.


HasChanged HasChanged HasChanged HasChanged

ChangeMonitor クラスによって監視されている状態が変更されたことを示す値を取得します。Gets a value that indicates that the state that is monitored by the ChangeMonitor class has changed.

IsDisposed IsDisposed IsDisposed IsDisposed

ChangeMonitor クラスの派生インスタンスが破棄されたことを示す値を取得します。Gets a value that indicates that the derived instance of a ChangeMonitor class is disposed.

UniqueId UniqueId UniqueId UniqueId

ChangeMonitor クラスのインスタンスを表す値を取得します。Gets a value that represents the ChangeMonitor class instance.


Dispose() Dispose() Dispose() Dispose()

ChangeMonitor クラスの現在のインスタンスによって使用されているすべてのリソースを解放します。Releases all resources that are used by the current instance of the ChangeMonitor class.

Dispose(Boolean) Dispose(Boolean) Dispose(Boolean) Dispose(Boolean)

すべてのマネージド リソースおよびアンマネージド リソースと、ChangeMonitor インスタンスへのすべての参照を解放します。Releases all managed and unmanaged resources and any references to the ChangeMonitor instance. このオーバーロードは、変更監視クラスの派生クラスで実装する必要があります。This overload must be implemented by derived change-monitor classes.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

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

(Inherited from Object)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

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

(Inherited from Object)
GetType() GetType() GetType() GetType()

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

(Inherited from Object)
InitializationComplete() InitializationComplete() InitializationComplete() InitializationComplete()

派生クラスのコンストラクターから呼び出され、初期化が完了したことを示します。Called from the constructor of derived classes to indicate that initialization is finished.

MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

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

(Inherited from Object)
NotifyOnChanged(OnChangedCallback) NotifyOnChanged(OnChangedCallback) NotifyOnChanged(OnChangedCallback) NotifyOnChanged(OnChangedCallback)

コールバックを登録し、依存関係が変化したときに ObjectCache デリゲートを通して OnChangedCallback インスタンスに通知するために、キャッシュの実装側によって呼び出されます。Called by Cache implementers to register a callback and notify an ObjectCache instance through the OnChangedCallback delegate when a dependency has changed.

OnChanged(Object) OnChanged(Object) OnChanged(Object) OnChanged(Object)

依存関係が変更されたときに、イベントを発生させるために派生クラスによって呼び出されます。Called by derived classes to raise the event when a dependency changes.

ToString() ToString() ToString() ToString()

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

(Inherited from Object)


スレッド セーフ

この型はスレッド セーフです。This type is thread safe.