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. インスタンスChangeMonitorは、キャッシュ項目が依存しているデータの状態の変化を監視します。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()メソッドが呼び出された後にオーバーロードを呼び出すことがInvalidOperationExceptionできます。これは、 Disposeオーバーロードが初期化が完了していない場合の例外。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.

-実装によって提供されるDependencyChanged インスタンスは、関連付けられているキャッシュエントリを削除し、列挙体を使用して理由を指定する必要があります。OnChangedCallback ObjectCache- 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は、キャッシュNotifyOnChanged(OnChangedCallback)OnChanged(Object)実装がメソッドを呼び出した前または後に、メソッドを呼び出すことができます。- A ChangeMonitor instance can call the OnChanged(Object) method either before a cache implementation has called NotifyOnChanged(OnChangedCallback) method or after. NotifyOnChanged(OnChangedCallback) NotifyOnChanged(OnChangedCallback) ChangeMonitor NotifyOnChanged(OnChangedCallback)が呼び出される前にメソッドが呼び出されると、基本実装によって、このが発生したことがキャッシュに通知され、が呼び出されるとすぐにコールバックが渡されるようになります。OnChanged(Object)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.

- ChangeMonitorインスタンスDispose()を破棄するには、メソッドのオーバーロードを呼び出す必要があります。- 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.

-キャッシュ項目とそれに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.

-キャッシュエントリが削除された場合、キャッシュの実装でも依存関係を破棄する必要があります。- 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.

true OnChanged(Object) OnChangedCallback -メソッドの呼び出しHasChanged によってオブジェクトが設定されているかどうかに関係なく、派生した変更監視インスタンスによってメソッドが呼び出された後に、プロパティがに設定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.