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
상속
ChangeMonitorChangeMonitorChangeMonitorChangeMonitor
파생
구현

설명

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() 하므로 메서드는 합니다 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) 메서드를 한 번만 호출할 수 있습니다.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 인스턴스에 한 번만 호출 됩니다.Otherwise, the OnChangedCallback instance will be called only one time. 이 한 번 호출 발생 하거나 때를 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.

-A 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() 메서드 오버 로드의 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.

-캐시 항목과 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.

항목 및 연결 된 after 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. - 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.

추가 정보