ChangeMonitor.Dispose Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Uvolní všechny prostředky používané aktuální instancí ChangeMonitor třídy.
Přetížení
Dispose() |
Uvolní všechny prostředky, které jsou používány aktuální instancí ChangeMonitor třídy. |
Dispose(Boolean) |
Uvolní všechny spravované a nespravované prostředky a všechny odkazy na ChangeMonitor instanci. Toto přetížení musí být implementováno odvozenými třídami monitorování změn. |
Poznámky
Metoda Dispose se používá k uvolnění ChangeMonitor instance a souvisejících prostředků. Veřejná Dispose metoda je vyvolána ke koordinaci procesu odstranění s klíčovými událostmi životního cyklu odvozených tříd monitorování změn (například inicializace) a k uvolnění ChangeMonitor instance, aby bylo možné instanci uvolnit. Metoda Dispose je implementovaná odvozenými třídami monitorování změn, aby se zbavila svých spravovaných a nespravovaných prostředků.
Dispose()
- Zdroj:
- ChangeMonitor.cs
- Zdroj:
- ChangeMonitor.cs
- Zdroj:
- ChangeMonitor.cs
Uvolní všechny prostředky, které jsou používány aktuální instancí ChangeMonitor třídy.
public:
virtual void Dispose();
public void Dispose ();
abstract member Dispose : unit -> unit
override this.Dispose : unit -> unit
Public Sub Dispose ()
Implementuje
Výjimky
Inicializace není dokončena v odvozené třídě change-monitor, která volala základní Dispose() metodu.
Poznámky
Metoda Dispose vyvolá metodu Dispose odvozených tříd pouze jednou, při prvním volání. Následná volání Dispose metody nemají žádný účinek. Po zavolání metody je vlastnost nastavena IsDisposed na true
.
Přetížení Dispose musí být volána, aby se instance zbavila ChangeMonitor . Následující pravidla pro volání metody dispose:
Před vložením položky do mezipaměti je na volajícím, aby instanci zlikvidovali ChangeMonitor .
Jakmile se položka mezipaměti a ChangeMonitor instance, které jsou k ní přidružené, předají do mezipaměti, implementátor mezipaměti, který musí zajistit, že Dispose je volána, i když vložení selže.
Po předání položky a jejích přidružených ChangeMonitor instancí do mezipaměti nesmí volající závislost odstranit, protože při Dispose volání metody se s voláním zachází, jako by se závislost změnila. V důsledku toho OnChanged se automaticky vyvolá metoda.
S ohledem na Dispose tato pravidla musí být metoda volána jedním z následujících způsobů:
Uživatelé musí volat Dispose přetížení metody, pokud se rozhodnou nevkládat odvozenou instanci monitorování změn do mezipaměti.
Implementace mezipaměti je zodpovědná za volání Dispose přetížení, pokud se implementace pokusí vložit instanci change-monitoru do mezipaměti objektů, ale vložení se nezdaří. Pokud pokus o vložení způsobí výjimku, implementace mezipaměti musí odstranit všechny přidružené závislosti.
Pokud je položka mezipaměti odebrána, implementace mezipaměti musí také odstranit závislost.
Interní implementace OnChanged metody automaticky volá metodu Dispose po volání zpětného volání, které je registrováno prostřednictvím NotifyOnChanged metody.
Poznámka
K tomuto automatickému odstranění během spouštění události dochází pouze v případě, že se inicializace ChangeMonitor instance dříve dokončila.
Když konstruktor odvozeného monitorování změn zavolá metodu InitializationComplete , pokud stav monitorování změn již změnil (to znamená, že stav, který je monitorován již se změnil, když konstruktor byl stále aktivní), pak InitializationComplete metoda automaticky odstraní monitorování změn.
Poznámka
Uživatelé by neměli volat metodu Dispose . Nemůžete však zabránit uživatelům ve volání metody. Proto pokud ano, OnChanged je vyvolána metoda. V takovém případě se položka mezipaměti oznámí, jako by se závislost změnila.
Aby se zabránilo přepsání Dispose metody odvozených tříd, není metoda explicitní implementace rozhraní.
Viz také
Platí pro
Dispose(Boolean)
- Zdroj:
- ChangeMonitor.cs
- Zdroj:
- ChangeMonitor.cs
- Zdroj:
- ChangeMonitor.cs
Uvolní všechny spravované a nespravované prostředky a všechny odkazy na ChangeMonitor instanci. Toto přetížení musí být implementováno odvozenými třídami monitorování změn.
protected:
abstract void Dispose(bool disposing);
protected abstract void Dispose (bool disposing);
abstract member Dispose : bool -> unit
Protected MustOverride Sub Dispose (disposing As Boolean)
Parametry
- disposing
- Boolean
true
k uvolnění spravovaných a nespravovaných prostředků a všech odkazů na ChangeMonitor instanci; false
k uvolnění pouze nespravovaných prostředků. Při false
předání Dispose(Boolean) je metoda volána vláknem finalizer
a všechny externí spravované odkazy již pravděpodobně nebudou platné, protože již byly uvolněny z paměti.
Poznámky
Pokud je true
hodnota disposing
hodnota , všechny spravované a nespravované prostředky jsou odstraněny a všechny odkazy na tento objekt jsou uvolněny, aby odvozená instance monitorování změn bylo možné uvolnit z paměti. Je zaručeno, že základní Dispose metoda vyvolá implementovanou Dispose metodu pouze jednou.
Poznámky pro implementátory
Monitorování změn musí implementovat Dispose(Boolean) přetížení, aby se uvolnily všechny spravované a nespravované prostředky, pokud hodnota parametru disposing
je true
. Přetížení Dispose(Boolean) metody, která má disposing
hodnotu je true
volána pouze jednou, a to při prvním odstranění instance. Monitorování změn nesmí volat Dispose(Boolean) přetížení přímo. Odvozené monitorování změn může volat metodu bez veřejných parametrů Dispose() v základní ChangeMonitor třídě.
Případně může monitorování změn implementovat metodu finalizátoru. V takovém případě může finalizátor vyvolat metodu Dispose(Boolean) a předat jí disposing
hodnotu false
. Obvykle je to ale zbytečné. Monitorování změn závislostí obvykle provádí služba, která udržuje odkaz na instanci change-monitoru. Odkaz brání uvolňování paměti instance, a proto je metoda finalizátoru nepotřebná. Aby nedošlo k nevracení paměti, metoda při změně OnChanged(Object) závislosti odstraní instanci monitorování změn (pokud se inicializace nedokončila).