ChangeMonitor.Dispose 方法

定義

釋放 ChangeMonitor 類別目前的執行個體所使用的全部資源。

多載

Dispose()

ChangeMonitor 類別的目前執行個體所使用的資源全部釋出。

Dispose(Boolean)

釋放所有的 Managed 資源和 Unmanaged 資源,以及對 ChangeMonitor 執行個體的所有參考。 這項多載必須由衍生自變更監控的類別實作。

備註

方法 Dispose 可用來釋放 ChangeMonitor 實例和相關資源。 系統會叫用公用 Dispose 方法來協調處置程式與衍生變更監視器類別的主要生命週期事件 (,例如初始化) ,以及釋放 ChangeMonitor 實例,以便垃圾收集實例。 方法 Dispose 是由衍生的變更監視器類別所實作,以處置其Managed和Unmanaged資源。

Dispose()

來源:
ChangeMonitor.cs
來源:
ChangeMonitor.cs
來源:
ChangeMonitor.cs

ChangeMonitor 類別的目前執行個體所使用的資源全部釋出。

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

實作

例外狀況

初始化沒有在呼叫基底 Dispose() 方法的衍生變更監視器類別中完成。

備註

方法DisposeDispose只會叫用衍生類別的方法一次,第一次呼叫它。 對方法的 Dispose 後續呼叫沒有任何作用。 呼叫 方法之後, IsDisposed 屬性會設定為 true

Dispose必須呼叫 多載才能處置 ChangeMonitor 實例。 以下是呼叫 dispose 方法的規則:

  • 在專案插入快取之前,呼叫端必須負責處置 ChangeMonitor 實例。

  • 一旦快取專案和 ChangeMonitor 與其相關聯的實例傳遞至快取,即使插入失敗,也必須確定 Dispose 已呼叫的快取實作器。

  • 將專案及其相關聯的 ChangeMonitor 實例傳遞至快取之後,呼叫端不得處置相依性,因為呼叫 方法時 Dispose ,呼叫會視為相依性已變更。 因此, OnChanged 會自動叫用 方法。

  • 將這些規則納入考慮, Dispose 必須以下列其中一種方式呼叫 方法:

    • 如果用戶決定不要將衍生的變更監視器實例插入快取中,則必須呼叫 Dispose 方法多載。

    • 如果實作嘗試將變更監視器實例插入物件快取,但插入失敗,則快取實作會負責呼叫 Dispose 多載。 當插入嘗試造成例外狀況時,快取實作必須處置任何相關聯的相依性。

    • 如果移除快取專案,快取實作也必須處置相依性。

方法的內部實作OnChanged會在呼叫透過 NotifyOnChanged 方法註冊的回呼之後自動呼叫 Dispose 方法。

注意

只有在先前完成實例的初始化 ChangeMonitor 時,才會在事件引發期間自動處置。

當衍生變更監視器的建構函式呼叫 InitializationComplete 方法時,如果變更監視器的狀態已經變更 (即,當建構函式仍在使用中時,監視的狀態已經變更) 則 InitializationComplete 方法會自動處置變更監視器。

注意

用戶不應該呼叫 Dispose 方法。 不過,您無法防止使用者呼叫 方法。 因此,如果這麼做, OnChanged 則會叫用 方法。 在此情況下,快取專案會通知,就像相依性已變更一樣。

為了避免衍生類別覆寫 Dispose 方法,此方法不是明確的介面實作。

另請參閱

適用於

Dispose(Boolean)

來源:
ChangeMonitor.cs
來源:
ChangeMonitor.cs
來源:
ChangeMonitor.cs

釋放所有的 Managed 資源和 Unmanaged 資源,以及對 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

true 表示釋放所有的 Managed 資源、Unmanaged 資源以及對 ChangeMonitor 執行個體的所有參考,false 表示只釋放 Unmanaged 資源。 傳遞 false 時,finalizer 執行緒會呼叫 Dispose(Boolean) 方法,任何外部 Managed 參考都可能不再有效,因為記憶體回收已經將這些參考收回。

備註

當值為 disposingtrue時,會處置所有 Managed 和 Unmanaged 資源,並釋放此物件的任何參考,以便垃圾收集衍生的變更監視器實例。 保證基底 Dispose 方法只會叫用實 Dispose 作的方法一次。

給實施者的注意事項

當的值disposingtrue時,Dispose(Boolean)變更監視器必須實作多載,以釋放所有 Managed 和 Unmanaged 資源。 Dispose(Boolean)具有 值true的方法多載disposing只會呼叫一次,也就是第一次處置實例時。 變更監視器不得直接呼叫 Dispose(Boolean) 多載。 衍生的變更監視器可以在基ChangeMonitor類上呼叫無Dispose()公用參數方法。

或者,變更監視器可以實作完成項方法。 在這裡情況下,完成項目可以叫用 方法,Dispose(Boolean)並將 值false傳遞為 disposing 。 不過,這通常是不必要的。 監視相依性變更通常是由維護變更監視實例參考的服務所執行。 參考可防止實例進行垃圾收集,因此不需要完成項方法。 為了避免記憶體流失,當相依性變更時, OnChanged(Object) 方法會處置變更監視器實例 (,除非初始化尚未完成) 。

適用於