Sdílet prostřednictvím


ChangeMonitor.Dispose Metoda

Definice

Uvolní všechny prostředky používané aktuální instancí ChangeMonitor třídy.

Přetížení

Name Description
Dispose()

Uvolní všechny prostředky, které používají aktuální instance 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 sledová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 sledování změn (například inicializace) a uvolnění ChangeMonitor instance, aby instance byla uvolněna z paměti. Metoda Dispose je implementována odvozenými třídami sledování změn, aby se zlikvidovaly jejich spravované a nespravované prostředky.

Dispose()

Zdroj:
ChangeMonitor.cs
Zdroj:
ChangeMonitor.cs
Zdroj:
ChangeMonitor.cs
Zdroj:
ChangeMonitor.cs

Uvolní všechny prostředky, které používají aktuální instance 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ě sledování změn, 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í metody Dispose nemají žádný vliv. Po zavolání metody je vlastnost nastavena IsDisposed na true.

Přetížení Dispose musí být volána pro odstranění ChangeMonitor instance. Následují pravidla pro volání metody Dispose:

  • Než se položka vloží do mezipaměti, je odpovědností volajícího ChangeMonitor k odstranění instance.

  • 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ý se musí ujistit, že Dispose je volána, i když se vložení nezdaří.

  • Po předání položky a přidružených ChangeMonitor instancí do mezipaměti volající nesmí likvidovat závislost, protože když Dispose je volána metoda, volání je považováno za to, jako by se závislost změnila. V důsledku toho OnChanged se metoda automaticky vyvolá.

  • Při zohlednění těchto pravidel je nutné metodu Dispose volat jedním z následujících způsobů:

    • Uživatelé musí zavolat Dispose přetížení metody, pokud se rozhodnou, že nevloží odvozenou instanci sledová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 sledování změn do mezipaměti objektů, ale vložení selže. Když pokus o vložení způsobí výjimku, implementace mezipaměti musí likvidovat všechny přidružené závislosti.

    • Pokud je položka mezipaměti odebrána, implementace mezipaměti musí také likvidovat závislost.

Interní implementace OnChanged metody automaticky volá metodu Dispose poté, co volá zpětné volání, které je registrováno NotifyOnChanged prostřednictvím metody.

Poznámka:

Tato automatická dispose během aktivaci události nastane pouze v případě, že inicializace ChangeMonitor instance byla dříve dokončena.

Když konstruktor odvozeného monitorování změn volá metodu InitializationComplete , pokud se stav monitorování změn již změnil (tj. stav, který je monitorován již změněn, když byl konstruktor stále aktivní), InitializationComplete metoda automaticky odstraní monitorování změn.

Poznámka:

Uživatelé by neměli metodu Dispose volat. Nemůžete však zabránit uživatelům v volání metody. Proto pokud ano, OnChanged metoda je vyvolána. V takovém případě je položka mezipaměti upozorněna, jako by se závislost změnila.

Chcete-li zabránit odvozené třídy přepsání Dispose metody, metoda není explicitní implementace rozhraní.

Viz také

Platí pro

Dispose(Boolean)

Zdroj:
ChangeMonitor.cs
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 sledová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 uvolnit spravované a nespravované prostředky a všechny odkazy na ChangeMonitor instanci; false uvolnit pouze nespravované prostředky. Při false předání metody je volána vláknem finalizer a všechny externí spravované odkazy již pravděpodobně nejsou platné, Dispose(Boolean) protože již byly uvolněny z paměti.

Poznámky

Pokud je truehodnota hodnota disposing , všechny spravované a nespravované prostředky jsou uvolněny a všechny odkazy na tento objekt jsou uvolněny tak, aby odvozená instance sledování změn mohl být uvolňování 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í uvolnit všechny spravované a nespravované prostředky, pokud je truehodnota disposing . Přetížení Dispose(Boolean) metody, která má disposing hodnotu true , je volána pouze jednou, konkrétně, když instance je uvolněna poprvé. Monitorování změn nesmí volat Dispose(Boolean) přetížení přímo. Odvozené monitorování změn může volat metodu bez Dispose() veřejného parametru v základní ChangeMonitor třídě.

Alternativně může monitorování změn implementovat finalizační metodu. V takovém případě může finalizátor vyvolat metodu Dispose(Boolean) a předat ji 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 sledování změn. Odkaz zabraňuje tomu, aby instance byla uvolněna z paměti, 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 sledování změn (pokud inicializace nebyla dokončena).

Platí pro