ChangeMonitor.Dispose 方法

定义

释放 ChangeMonitor 类的当前实例所使用的所有资源。

重载

Dispose()

释放由 ChangeMonitor 类的当前实例占用的所有资源。

Dispose(Boolean)

释放所有托管资源和非托管资源,以及对 ChangeMonitor 实例的任何引用。 此重载必须由派生的更改监视器类实现。

注解

方法 Dispose 用于释放 ChangeMonitor 实例和相关资源。 调用公共 Dispose 方法以将处置过程与派生的变更监视类 (的关键生命周期事件(例如初始化) )协调,并释放 ChangeMonitor 实例以便可以进行垃圾回收。 方法 Dispose 由派生的变更监视器类实现,以释放其托管和非托管资源。

Dispose()

Source:
ChangeMonitor.cs
Source:
ChangeMonitor.cs
Source:
ChangeMonitor.cs

释放由 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 必须通过以下方式之一调用 方法:

    • 如果用户决定不将派生的 Dispose 更改监视器实例插入缓存,则必须调用方法重载。

    • 如果实现尝试将 Dispose 更改监视器实例插入对象缓存,但插入失败,则缓存实现负责调用重载。 当插入尝试导致异常时,缓存实现必须释放任何关联的依赖项。

    • 如果删除缓存条目,缓存实现还必须释放依赖项。

方法的内部实现 OnChanged 在调用 Dispose 通过 NotifyOnChanged 方法注册的回调后自动调用 方法。

注意

仅当实例的初始化之前完成时, ChangeMonitor 才会在事件触发期间自动释放。

当派生的更改监视器的构造函数调用 InitializationComplete 方法时,如果更改监视器的状态已更改 (即,当构造函数仍然处于活动状态时,受监视的状态已更改) 则 InitializationComplete 方法将自动释放更改监视器。

注意

用户不应调用 Dispose 方法。 但是,无法阻止用户调用 方法。 因此,如果这样做,则会 OnChanged 调用 方法。 在这种情况下,将通知缓存条目,就像依赖项已更改一样。

为了防止派生类重写 Dispose 方法,方法不是显式接口实现。

另请参阅

适用于

Dispose(Boolean)

Source:
ChangeMonitor.cs
Source:
ChangeMonitor.cs
Source:
ChangeMonitor.cs

释放所有托管资源和非托管资源,以及对 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 线程调用,所有外部托管引用由于已经作为垃圾回收,因此可能不再有效。

注解

当 value truedisposing值为 时,将释放所有托管和非托管资源,并释放对此对象的任何引用,以便可以垃圾回收派生的更改监视器实例。 可以保证基 Dispose 方法将只调用一次实现 Dispose 的方法。

实施者说明

当 的值为 disposingtrue时,Dispose(Boolean)更改监视器必须实现重载以释放所有托管和非托管资源。 Dispose(Boolean)值为 true 的方法重载disposing仅调用一次,即首次释放实例时。 更改监视器不得直接调用 Dispose(Boolean) 重载。 派生的更改监视器可以调用基ChangeMonitor类上的无Dispose()参数公共方法。

或者,更改监视器可以实现终结器方法。 在这种情况下,终结器可以调用 方法, Dispose(Boolean) 并向其 disposing 传递值 false。 但是,这通常是不必要的。 依赖项更改的监视通常由维护对更改监视器实例的引用的服务执行。 引用可防止对实例进行垃圾回收,因此不需要终结器方法。 为了避免内存泄漏,当依赖项发生更改时,除非初始化尚未完成) , OnChanged(Object) 否则 方法会释放更改监视器实例 (。

适用于