ChangeMonitor.Dispose 메서드

정의

ChangeMonitor 클래스의 현재 인스턴스에서 사용하는 모든 리소스를 해제합니다.Releases all resources used by the current instance of the ChangeMonitor class.

오버로드

Dispose()

ChangeMonitor 클래스의 현재 인스턴스에서 사용하는 모든 리소스를 해제합니다.Releases all resources that are used by the current instance of the ChangeMonitor class.

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.

설명

합니다 Dispose 메서드 릴리스를 사용 하는 ChangeMonitor 인스턴스와 관련 된 리소스입니다.The Dispose method is used to release the ChangeMonitor instance and related resources. 공용 Dispose (예: 초기화)에서 파생 된 변경 모니터 클래스의 키 수명 주기 이벤트를 사용 하 여 삭제 프로세스를 조정 하 고 릴리스를 메서드가 호출 되는 ChangeMonitor 인스턴스가 가비지 수집 될 수 있도록 인스턴스입니다.The public Dispose method is invoked to coordinate the disposal process with key life-cycle events of derived change-monitor classes (such as initialization), and to release the ChangeMonitor instance so that the instance can be garbage collected. Dispose 메서드는 관리 및 관리 되지 않는 리소스를 삭제 하기 위해 파생 된 변경 모니터 클래스에서 구현 됩니다.The Dispose method is implemented by derived change-monitor classes to dispose of their managed and unmanaged resources.

Dispose()

ChangeMonitor 클래스의 현재 인스턴스에서 사용하는 모든 리소스를 해제합니다.Releases all resources that are used by the current instance of the ChangeMonitor class.

public:
 virtual void Dispose();
public void Dispose ();
abstract member Dispose : unit -> unit
override this.Dispose : unit -> unit
Public Sub Dispose ()

구현

예외

기본 Dispose() 메서드를 호출한 파생된 변경 모니터 클래스에서 초기화가 완료되지 않았습니다.Initialization is not complete in the derived change-monitor class that called the base Dispose() method.

설명

합니다 Dispose 메서드를 호출 하는 Dispose 메서드의 파생된 클래스 한 번만에 처음으로 호출 됩니다.The Dispose method invokes the Dispose method of derived classes only one time, the first time it is called. 에 대 한 후속 호출을 Dispose 메서드 영향을 주지 않습니다.Subsequent calls to the Dispose method have no effect. 메서드를 호출한 후 합니다 IsDisposed 속성이 true합니다.After the method has been called, the IsDisposed property is set to true.

합니다 Dispose 오버 로드의 dispose를 호출 해야 합니다는 ChangeMonitor 인스턴스.The Dispose overload must be called to dispose of a ChangeMonitor instance. 다음은 dispose 메서드를 호출 하는 것에 대 한 규칙:The following are the rules for calling the dispose method:

  • 삭제 해야 하는 호출자의 항목은 캐시에 삽입 하기 전에 ChangeMonitor 인스턴스.Before an item is inserted into the cache, it is the caller's responsibility 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 that must make sure that Dispose 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 메서드가 자동으로 실행 됩니다.As a result, the OnChanged 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 구현을 변경 모니터 인스턴스는 개체 캐시에 삽입 하려고 시도 하지만 삽입이 실패 하는 경우 오버 로드 합니다.The cache implementation is responsible for calling the Dispose overload if the implementation tries to insert the change-monitor instance into an object cache but the insertion fails. 삽입 시도가 예외를 발생 시키는 캐시 구현이 관련 된 모든 종속성을 삭제 해야 합니다.When the insertion attempt causes an exception, the cache implementation must dispose any associated dependencies.

    • 캐시 엔트리가 제거 된 경우 캐시 구현이 종속성도 삭제 해야 합니다.If the cache entry is removed, the cache implementation must also dispose the dependency.

내부 구현을 OnChanged 메서드를 자동으로 호출 합니다 Dispose 메서드는 콜백을 호출 후이 통해 등록 된는 NotifyOnChanged 메서드.The internal implementation of the OnChanged method automatically calls the Dispose method after it calls a callback that is registered through the NotifyOnChanged method.

참고

경우에 이벤트 발생 하는 동안이 자동 dispose 발생의 초기화를 ChangeMonitor 인스턴스가 이전에 완료 되었습니다.This automatic dispose during the event firing only occurs if the initialization of the ChangeMonitor instance 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 has already changed when the constructor was still active) then InitializationComplete method will automatically dispose the change monitor.

참고

사용자를 호출 하지 않아야 합니다 Dispose 메서드.Users should not call the Dispose method. 그러나 메서드를 호출에서 사용자를 막을 수 없습니다.However, you cannot prevent users from calling the method. 따라서, 그럴 경우는 OnChanged 메서드가 실행 됩니다.Therefore, if they do, the OnChanged method is invoked. 이 경우 캐시 엔트리는 종속성이 변경 된 것 처럼 알림이 전송 됩니다.In that case, the cache entry is notified as if the dependency has changed.

파생된 클래스를 재정의 하지 못하도록 Dispose 메서드를 메서드는 명시적 인터페이스 구현이 아닙니다.To prevent derived classes from overriding Dispose method, the method is not an explicit interface implementation.

추가 정보

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.

protected:
 abstract void Dispose(bool disposing);
protected abstract void Dispose (bool disposing);
abstract member Dispose : bool -> unit
Protected MustOverride Sub Dispose (disposing As Boolean)

매개 변수

disposing
Boolean

관리되는 리소스 및 관리되지 않는 리소스와 ChangeMonitor 인스턴스에 대한 모든 참조를 해제하려면 true이고, 관리되지 않는 리소스만 해제하려면 false입니다.true to release managed and unmanaged resources and any references to a ChangeMonitor instance; false to release only unmanaged resources. false가 전달되면 Dispose(Boolean) 메서드가 finalizer 스레드에 의해 호출되고, 모든 외부 관리 참조가 이미 가비지 수집되었기 때문에 더 이상 유효하지 않습니다.When false is passed, the Dispose(Boolean) method is called by a finalizer thread and any external managed references are likely no longer valid because they have already been garbage collected.

설명

경우 값 disposing 값은 true, 모든 관리 및 관리 되지 않는 리소스 삭제 되 고 파생 된 변경 모니터 인스턴스의 가비지 수집 될 수 있도록이 개체에 대 한 참조가 해제 됩니다.When the value of disposing value is true, all managed and unmanaged resources are disposed and any references to this object are released so that the derived change-monitor instance can be garbage collected. 반드시 기본 Dispose 메서드는 구현 된 호출 Dispose 메서드 한 번만 합니다.It is guaranteed that the base Dispose method will invoke the implemented Dispose method only one time.

상속자 참고

변경 모니터를 구현 해야 합니다는 Dispose(Boolean) 오버 로드 모두 해제를 관리 하 고 관리 되지 않는 리소스 때 변수의 disposingtrue합니다.A change monitor must implement the Dispose(Boolean) overload to release all managed and unmanaged resources when the value of disposing is true. Dispose(Boolean) 포함 된 메서드 오버 로드를 disposing 의 값 true 라고 한 번만 즉, 인스턴스가 처음으로 삭제 될 때입니다.The Dispose(Boolean) method overload that has a disposing value of true is called only one time, namely, when the instance is disposed for the first time. 변경 모니터를 호출 하지 않아야 합니다 Dispose(Boolean) 오버 로드를 직접.A change monitor must not call the Dispose(Boolean) overload directly. 파생된 된 변경 모니터 공용 매개 변수 없이 호출할 수 있습니다 Dispose() 메서드를 기본 ChangeMonitor 클래스입니다.A derived change monitor can call the public parameter-less Dispose() method on the base ChangeMonitor class.

또는 변경 모니터 종료자 메서드를 구현할 수 있습니다.Alternatively, a change monitor can implement a finalizer method. 이런 경우 종료자를 호출할 수 있습니다는 Dispose(Boolean) 메서드 전달를 disposing 의 값 false합니다.In that case, the finalizer can invoke the Dispose(Boolean) method and pass it a disposing value of false. 그러나 일반적으로 필요한 아닙니다.However, this is usually unnecessary. 종속성이 변경에 대 한 모니터링은 일반적으로 변경 모니터 인스턴스에 대 한 참조를 유지 하는 서비스에서 수행 됩니다.Monitoring for dependency changes is typically performed by a service that maintains a reference to the change-monitor instance. 참조가는 인스턴스가 가비지 수집 되지 않습니다 하 고 불필요 한 종료자 메서드를 사용 합니다.The reference prevents the instance from being garbage collected, and therefore makes a finalizer method unnecessary. 종속성이 변경 되 면 메모리 누수를 방지 하는 OnChanged(Object) 메서드 (하지 않는 한 초기화가 완료 되지)는 변경 모니터 인스턴스를 삭제 합니다.To avoid memory leaks, when a dependency changes, the OnChanged(Object) method disposes the change-monitor instance (unless initialization has not finished).

적용 대상