ChangeMonitor.Dispose Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
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).