ChangeMonitor.Dispose Metod

Definition

Släpper alla resurser som används av den aktuella instansen ChangeMonitor av klassen.

Överlagringar

Name Description
Dispose()

Frigör alla resurser som används av den aktuella instansen ChangeMonitor av klassen.

Dispose(Boolean)

Släpper alla hanterade och ohanterade resurser och eventuella referenser till instansen ChangeMonitor . Den här överlagringen måste implementeras av härledda ändringsövervakarklasser.

Kommentarer

Metoden Dispose används för att frigöra instansen ChangeMonitor och relaterade resurser. Den offentliga Dispose metoden anropas för att samordna borttagningsprocessen med viktiga livscykelhändelser för härledda ändringsövervakarklasser (till exempel initiering) och för att frigöra instansen ChangeMonitor så att instansen kan samlas in skräp. Metoden Dispose implementeras av härledda ändringsövervakarklasser för att ta bort deras hanterade och ohanterade resurser.

Dispose()

Källa:
ChangeMonitor.cs
Källa:
ChangeMonitor.cs
Källa:
ChangeMonitor.cs
Källa:
ChangeMonitor.cs

Frigör alla resurser som används av den aktuella instansen ChangeMonitor av klassen.

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

Implementeringar

Undantag

Initieringen är inte klar i den härledda change-monitor-klassen som kallas basmetoden Dispose() .

Kommentarer

Metoden Dispose anropar Dispose metoden för härledda klasser bara en gång, första gången den anropas. Efterföljande anrop till Dispose metoden har ingen effekt. När metoden har anropats är egenskapen IsDisposed inställd på true.

Överlagringen Dispose måste anropas för att ta bort en ChangeMonitor instans. Följande är reglerna för att anropa metoden för bortskaffning:

  • Innan ett objekt infogas i cacheminnet är det anroparens ansvar att ta bort en ChangeMonitor instans.

  • När cacheobjektet och de ChangeMonitor instanser som är associerade med det har skickats till en cache skickas cache-implementeraren som måste se till att anropas Dispose , även om infogningen misslyckas.

  • När ett objekt och dess associerade ChangeMonitor instanser har skickats till en cache får anroparen inte ta bort beroendet eftersom anropet behandlas som om beroendet har ändrats när Dispose metoden anropas. Därför OnChanged anropas metoden automatiskt.

  • Med dessa regler i åtanke Dispose måste metoden anropas på något av följande sätt:

    • Användarna måste anropa metodens Dispose överlagring om de bestämmer sig för att inte infoga den härledda instansen för ändringsövervakare i en cache.

    • Cacheimplementeringen ansvarar för att anropa Dispose överbelastningen om implementeringen försöker infoga instansen för ändringsövervakaren i ett objektcachen, men infogningen misslyckas. När infogningsförsöket orsakar ett undantag måste cacheimplementeringen ta bort eventuella associerade beroenden.

    • Om cacheposten tas bort måste cacheimplementeringen också ta bort beroendet.

Den interna implementeringen av OnChanged metoden anropar Dispose automatiskt metoden när den anropar ett återanrop som har registrerats via NotifyOnChanged metoden.

Note

Den här automatiska bortskaffningen under händelseavfyrningen sker endast om initieringen av instansen ChangeMonitor tidigare har slutförts.

När konstruktorn för en härledd ändringsövervakare anropar InitializationComplete metoden, om tillståndet för ändringsövervakaren redan har ändrats (det vill säga det tillstånd som övervakas har redan ändrats när konstruktorn fortfarande var aktiv) InitializationComplete kommer metoden automatiskt att ta bort ändringsövervakaren.

Note

Användarna bör inte anropa Dispose metoden. Du kan dock inte hindra användare från att anropa metoden. Om de gör det OnChanged anropas därför metoden. I så fall meddelas cacheposten som om beroendet har ändrats.

För att förhindra härledda klasser från att Dispose åsidosätta metoden är metoden inte en explicit gränssnittsimplementering.

Se även

Gäller för

Dispose(Boolean)

Källa:
ChangeMonitor.cs
Källa:
ChangeMonitor.cs
Källa:
ChangeMonitor.cs
Källa:
ChangeMonitor.cs

Släpper alla hanterade och ohanterade resurser och eventuella referenser till instansen ChangeMonitor . Den här överlagringen måste implementeras av härledda ändringsövervakarklasser.

protected:
 abstract void Dispose(bool disposing);
protected abstract void Dispose(bool disposing);
abstract member Dispose : bool -> unit
Protected MustOverride Sub Dispose (disposing As Boolean)

Parametrar

disposing
Boolean

true för att frigöra hanterade och ohanterade resurser och referenser till en ChangeMonitor instans, false för att endast frigöra ohanterade resurser. När false skickas Dispose(Boolean) anropas metoden av en finalizer tråd och eventuella externa hanterade referenser är sannolikt inte längre giltiga eftersom de redan har samlats in skräp.

Kommentarer

När värdet disposing för värdet är truetas alla hanterade och ohanterade resurser bort och alla referenser till det här objektet frigörs så att den härledda instansen för ändringsövervakare kan samlas in skräp. Det är garanterat att basmetoden Dispose endast anropar den implementerade Dispose metoden en gång.

Anteckningar till implementerare

En ändringsövervakare måste implementera överbelastningen Dispose(Boolean) för att frigöra alla hanterade och ohanterade resurser när värdet disposing för är true. Metodöverlagringen Dispose(Boolean) som har värdet disposingtrue kallas bara en gång, nämligen när instansen tas bort för första gången. En ändringsövervakare får inte anropa överbelastningen Dispose(Boolean) direkt. En övervakare av härledda ändringar kan anropa den offentliga parameterlösa Dispose() metoden i basklassen ChangeMonitor .

En ändringsövervakare kan också implementera en finalizer-metod. I så fall kan finaliseraren anropa Dispose(Boolean) metoden och skicka den ett disposing värde på false. Detta är dock vanligtvis onödigt. Övervakning av beroendeändringar utförs vanligtvis av en tjänst som upprätthåller en referens till instansen för ändringsövervakaren. Referensen förhindrar att instansen samlas in skräp och därför gör en finalizer-metod onödig. För att undvika minnesläckor, när ett beroende ändras, OnChanged(Object) bortskaffar metoden change-monitor-instansen (om inte initieringen inte har slutförts).

Gäller för