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 instance 구현 ObjectCache 에 ObjectCache 삽입된 후 instance 변경 모니터를 삭제해야 합니다. 삽입 유효 하지 않으며, 예외가 발생 하는 경우에 합니다 ObjectCache 구현을 호출 해야 합니다는 Dispose 오버 로드 합니다.
파생된 변경 모니터를 캐시에 삽입한 후 구현은 개체를 ObjectCache 전달 OnChangedCallback 하여 를 호출NotifyOnChanged(OnChangedCallback)해야 합니다. NotifyOnChanged(OnChangedCallback) 메서드를 한 번만 호출할 수 있습니다. 종속성이 변경 문제가 이미 발생 했다면 합니다 OnChangedCallback 인스턴스를 즉시 호출 됩니다 때 NotifyOnChanged(OnChangedCallback) 라고 합니다. 그렇지 않은 경우는 OnChangedCallback 인스턴스에 한 번만 호출 됩니다. 이 한 번 호출 발생 하거나 때를 OnChanged(Object) 때문에 메서드는 ChangeMonitor 인스턴스가 변경 검색 되거나를 Dispose() 메서드를 호출는 ChangeMonitor, 중 먼저 발생 하 합니다.
OnChangedCallback 구현에서 제공하는 ObjectCache instance 연결된 캐시 항목을 제거하고 열거형을 사용하여 DependencyChanged 이유를 지정해야 합니다.
ChangeMonitor instance 캐시 구현이 메서드를 OnChanged(Object) 호출하기 전이나 이후에 메서드를 호출 NotifyOnChanged(OnChangedCallback) 할 수 있습니다. 경우는 OnChanged(Object) 메서드 전에 호출 됩니다 NotifyOnChanged(OnChangedCallback) 호출 되는 기본 ChangeMonitor 이 발생 하는 캐시에 그 사실을 알리는 구현과 전달할 콜백 트리거할 NotifyOnChanged(OnChangedCallback) 즉시 NotifyOnChanged(OnChangedCallback) 가 호출 됩니다. 에 전달 되는 상태 데이터를 OnChanged(Object) 메서드 변경 모니터에 의해 저장 되 고 이후에 전달할를 NotifyOnChanged(OnChangedCallback) 메서드 때는 NotifyOnChanged(OnChangedCallback) 메서드가 실행 됩니다.
변경 모니터는 메서드를 Dispose(Boolean) 구현해야 합니다. 자세한 내용은 Dispose(Boolean) 메서드 설명서를 참조하세요.
Dispose() instance 삭제하려면 메서드 오버로드를 ChangeMonitor 호출해야 합니다. Dispose를 호출 하는 것에 대 한 규칙 아래와 같습니다.
항목을 캐시에 삽입하기 전에 호출자는 instance 삭제 ChangeMonitor 해야 합니다.
캐시 항목과 ChangeMonitor 연결된 인스턴스가 캐시에 전달되면 캐시 구현자는 삽입이 실패하더라도 메서드가 Dispose 호출되었는지 확인해야 합니다.
항목 및 연결 된 후 ChangeMonitor 인스턴스 캐시에 전달 된, 때문에 호출자에 게가 종속성을 삭제 해야 경우는 Dispose 메서드가 호출 되 면 호출의 종속성이 변경 된 것 처럼 처리 됩니다. 결과적으로 OnChanged(Object) 메서드가 자동으로 실행 됩니다.
이러한 규칙 고려는 Dispose 다음 방법 중 하나로 메서드를 호출 해야 합니다.
사용자를 호출 해야 합니다는 Dispose() 메서드 오버 로드는 하지 않기로 결정 파생 된 변경 모니터 인스턴스 캐시에 삽입 합니다.
구현에서 개체 캐시에 변경 모니터 instance 삽입하려고 하지만 삽입이 실패하면 캐시 구현은 오버로드를 호출합니다Dispose(). 삽입 시도가 예외를 발생 시키는 캐시 구현이 관련 된 모든 종속성을 삭제 해야 합니다.
캐시 항목이 제거되면 캐시 구현도 종속성을 삭제해야 합니다.
메서드의 OnChanged(Object) 내부 구현은 를 통해 NotifyOnChanged(OnChangedCallback)등록된 콜백을 호출한 후 메서드를 자동으로 호출 Dispose 합니다.
참고: 이벤트 발생 중에 dispose 메서드에 대한 이 자동 호출은 instance 초기화 ChangeMonitor 가 이전에 완료된 경우에만 발생합니다.
파생 된 변경 모니터의 생성자가 호출 하는 경우는 InitializationComplete() 메서드를 변경 모니터의 상태가 이미 변경 된 경우 (즉, 생성자가 여전히 활성화 하는 경우 이미 변경 된 모니터링 되는 상태)는 InitializationComplete() 메서드는 변경 모니터의 자동으로 삭제 합니다.
- 속성은 HasChanged 메서드를 호출하여
true
개체를 설정했는지 여부에 OnChangedCallback 관계없이 파생된 변경 모니터 instance 의해 메서드를 호출 NotifyOnChanged(OnChangedCallback) 한 후 OnChanged(Object) 로 설정됩니다.
생성자
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) |
적용 대상
스레드 보안
이 형식은 스레드로부터 안전합니다.
추가 정보
.NET