ChangeMonitor.Dispose 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
釋放 ChangeMonitor 類別目前的執行個體所使用的全部資源。
多載
Dispose() |
將 ChangeMonitor 類別的目前執行個體所使用的資源全部釋出。 |
Dispose(Boolean) |
釋放所有的 Managed 資源和 Unmanaged 資源,以及對 ChangeMonitor 執行個體的所有參考。 這項多載必須由衍生自變更監控的類別實作。 |
備註
方法 Dispose 可用來釋放 ChangeMonitor 實例和相關資源。 系統會叫用公用 Dispose 方法來協調處置程式與衍生變更監視器類別的主要生命週期事件 (,例如初始化) ,以及釋放 ChangeMonitor 實例,以便垃圾收集實例。 方法 Dispose 是由衍生的變更監視器類別所實作,以處置其Managed和Unmanaged資源。
Dispose()
將 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 必須以下列其中一種方式呼叫 方法:
方法的內部實作OnChanged會在呼叫透過 NotifyOnChanged 方法註冊的回呼之後自動呼叫 Dispose 方法。
注意
只有在先前完成實例的初始化 ChangeMonitor 時,才會在事件引發期間自動處置。
當衍生變更監視器的建構函式呼叫 InitializationComplete 方法時,如果變更監視器的狀態已經變更 (即,當建構函式仍在使用中時,監視的狀態已經變更) 則 InitializationComplete 方法會自動處置變更監視器。
為了避免衍生類別覆寫 Dispose 方法,此方法不是明確的介面實作。
另請參閱
適用於
Dispose(Boolean)
釋放所有的 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 參考都可能不再有效,因為記憶體回收已經將這些參考收回。
備註
當值為 disposing
true
時,會處置所有 Managed 和 Unmanaged 資源,並釋放此物件的任何參考,以便垃圾收集衍生的變更監視器實例。 保證基底 Dispose 方法只會叫用實 Dispose 作的方法一次。
給實施者的注意事項
當的值disposing
為 true
時,Dispose(Boolean)變更監視器必須實作多載,以釋放所有 Managed 和 Unmanaged 資源。 Dispose(Boolean)具有 值true
的方法多載disposing
只會呼叫一次,也就是第一次處置實例時。 變更監視器不得直接呼叫 Dispose(Boolean) 多載。 衍生的變更監視器可以在基ChangeMonitor類上呼叫無Dispose()公用參數方法。
或者,變更監視器可以實作完成項方法。 在這裡情況下,完成項目可以叫用 方法,Dispose(Boolean)並將 值false
傳遞為 disposing
。 不過,這通常是不必要的。 監視相依性變更通常是由維護變更監視實例參考的服務所執行。 參考可防止實例進行垃圾收集,因此不需要完成項方法。 為了避免記憶體流失,當相依性變更時, OnChanged(Object) 方法會處置變更監視器實例 (,除非初始化尚未完成) 。