ChangeMonitor.Dispose 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
释放 ChangeMonitor 类的当前实例所使用的所有资源。
重载
Dispose() |
释放由 ChangeMonitor 类的当前实例占用的所有资源。 |
Dispose(Boolean) |
释放所有托管资源和非托管资源,以及对 ChangeMonitor 实例的任何引用。 此重载必须由派生的更改监视器类实现。 |
注解
Dispose方法用于释放 实例 ChangeMonitor 和相关资源。 调用 public 方法以将处置过程与派生变更监视器类的关键生命周期事件协调 (例如初始化) ,并释放 实例,以便对实例进行 Dispose ChangeMonitor 垃圾回收。 Dispose方法由派生变更监视器类实现,以释放其托管资源以及非托管资源。
Dispose()
释放由 ChangeMonitor 类的当前实例占用的所有资源。
public:
virtual void Dispose();
public void Dispose ();
abstract member Dispose : unit -> unit
override this.Dispose : unit -> unit
Public Sub Dispose ()
实现
例外
在调用 Dispose() 基方法的派生更改监视器类中,初始化未完成。
注解
Dispose方法仅在第一次 Dispose 调用派生类时调用该方法一次。 对 方法的后续 Dispose 调用不起作用。 调用 方法后, IsDisposed 属性将设置为 true
。
Dispose必须调用 重载以释放 ChangeMonitor 实例。 下面是调用 dispose 方法的规则:
在将项插入到缓存中之前,调用方负责释放 ChangeMonitor 实例。
缓存项及其关联的实例传递到缓存后,即使插入失败,也必须确保调用 的缓存 ChangeMonitor Dispose 实现者。
将项及其关联的实例传递到缓存后,调用方不得释放依赖项,因为在调用 方法时,调用将被视为依赖项 ChangeMonitor Dispose 已更改。 因此,会自动调用 OnChanged 方法。
考虑到这些规则, Dispose 必须采用以下方法之一调用 方法:
方法的内部实现在调用通过 方法注册的回调后 OnChanged Dispose 自动调用 NotifyOnChanged 方法。
备注
仅在实例的初始化之前完成时,才在事件触发期间 ChangeMonitor 进行此自动释放。
当派生更改监视器的构造函数调用 方法时,如果更改监视器的状态已更改 (即,当构造函数仍处于活动状态时,受监视的状态已更改) 则 方法将自动释放更改监视器。 InitializationComplete InitializationComplete
为了防止派生类重写 Dispose 方法,该方法不是显式接口实现。
另请参阅
适用于
Dispose(Boolean)
释放所有托管资源和非托管资源,以及对 ChangeMonitor 实例的任何引用。 此重载必须由派生的更改监视器类实现。
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
。 传递 false
时,Dispose(Boolean) 方法由 finalizer
线程调用,所有外部托管引用由于已经作为垃圾回收,因此可能不再有效。
注解
值为 时,将释放所有托管资源以及非托管资源,并释放对此对象的任何引用,以便对派生 disposing
true
更改监视器实例进行垃圾回收。 保证基方法仅 Dispose 调用实现的方法 Dispose 一次。
实施者说明
当 的值为 时,更改监视器必须实现 重载以释放所有托管资源 Dispose(Boolean) 以及非 disposing
托管资源 true
。 值为 的方法重载仅调用一次,即首次释放实例 Dispose(Boolean) disposing
true
时。 更改监视器不得直接调用 Dispose(Boolean) 重载。 派生更改监视器可以在基类上调用公共 Dispose() 无参数 ChangeMonitor 方法。
或者,更改监视器可以实现终结器方法。 在这种情况下,终结器可以调用 方法 Dispose(Boolean) ,并传递 disposing
值 false
。 但是,这通常是不必要的。 监视依赖项更改通常由维护对更改监视器实例的引用的服务执行。 引用可防止实例被垃圾回收,因此不需要终结器方法。 为了避免内存泄漏,当依赖项发生更改时,方法将释放更改监视器实例 (,除非初始化尚未完成 OnChanged(Object)) 。