ChangeMonitor.Dispose Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Gibt alle von der aktuellen Instanz der ChangeMonitor-Klasse verwendeten Ressourcen frei.
Überlädt
| Dispose() |
Gibt alle von der aktuellen Instanz der ChangeMonitor-Klasse verwendeten Ressourcen frei. |
| Dispose(Boolean) |
Gibt alle verwalteten und nicht verwalteten Ressourcen und alle Verweise auf die ChangeMonitor-Instanz frei. Diese Überladung muss von abgeleiteten Änderungsüberwachungsklassen implementiert werden. |
Hinweise
Die Dispose -Methode wird verwendet, um die ChangeMonitor Instanz und die zugehörigen Ressourcen freizugeben. Die öffentliche Dispose Methode wird aufgerufen, um den Beseitigungsprozess mit wichtigen Lebenszyklusereignissen abgeleiteter Änderungsüberwachungsklassen (z. B. Initialisierung) zu koordinieren und die Instanz freizugeben, ChangeMonitor damit die Instanz zur Garbage Collection freigegeben werden kann. Die Dispose -Methode wird von abgeleiteten Change Monitor-Klassen implementiert, um ihre verwalteten und nicht verwalteten Ressourcen zu verwerfen.
Dispose()
Gibt alle von der aktuellen Instanz der ChangeMonitor-Klasse verwendeten Ressourcen frei.
public:
virtual void Dispose();
public void Dispose ();
abstract member Dispose : unit -> unit
override this.Dispose : unit -> unit
Public Sub Dispose ()
Implementiert
Ausnahmen
Die Initialisierung ist in der abgeleiteten Änderungsüberwachungsklasse nicht vollständig, die die Dispose()-Basismethode aufrief.
Hinweise
Die Dispose -Methode ruft die Dispose -Methode abgeleiteter Klassen nur einmal auf, wenn sie zum ersten Mal aufgerufen wird. Nachfolgende Aufrufe der Dispose -Methode haben keine Auswirkungen. Nachdem die -Methode aufgerufen wurde, wird die IsDisposed -Eigenschaft auf true festgelegt.
Die Dispose -Überladung muss aufgerufen werden, um eine -Instanz zu ChangeMonitor verwerfen. Es folgen die Regeln zum Aufrufen der dispose-Methode:
Bevor ein Element in den Cache eingefügt wird, liegt es in der Verantwortung des Aufrufers, eine -Instanz zu ChangeMonitor löschen.
Sobald das Cacheelement und die ChangeMonitor zugeordneten Instanzen an einen Cache übergeben wurden, muss die Cache-Implementiererin sicherstellen, dass Dispose aufgerufen wird, auch wenn die Einfügung fehlschlägt.
Nachdem ein Element und die ChangeMonitor zugehörigen Instanzen an einen Cache übergeben wurden, darf der Aufrufer die Abhängigkeit nicht verwerfen, da beim Aufrufen der Dispose Methode der Aufruf so behandelt wird, als ob sich die Abhängigkeit geändert hat. Daher wird die OnChanged -Methode automatisch aufgerufen.
Unter Berücksichtigung dieser Regeln muss die Dispose -Methode auf eine der folgenden Arten aufgerufen werden:
Benutzer müssen die Dispose Methodenüberladung aufrufen, wenn sie die abgeleitete Change Monitor-Instanz nicht in einen Cache einfügen möchten.
Die Cacheimplementierungen sind für den Aufruf der Dispose -Überladung verantwortlich, wenn die Implementierung versucht, die Change Monitor-Instanz in einen Objektcache einzufügen, die Einfügung jedoch fehlschlägt. Wenn der Einfügeversuch eine Ausnahme auslöst, muss die Cacheimplementierungen alle zugeordneten Abhängigkeiten löschen.
Wenn der Cacheeintrag entfernt wird, muss die Cacheimplementierungen auch die Abhängigkeit löschen.
Die interne Implementierung der OnChanged -Methode ruft die -Methode automatisch Dispose auf, nachdem sie einen Rückruf aufgerufen hat, der über die -Methode registriert NotifyOnChanged wird.
Hinweis
Diese automatische Löschung während des Auslösens des Ereignisses tritt nur auf, wenn die Initialisierung der ChangeMonitor Instanz zuvor abgeschlossen wurde.
Wenn der Konstruktor eines abgeleiteten Änderungsmonitors die -Methode aufruft InitializationComplete und sich der Zustand des Änderungsmonitors bereits geändert hat (d. h. der überwachte Zustand hat sich bereits geändert, als der Konstruktor noch aktiv war), gibt die Methode den InitializationComplete Änderungsmonitor automatisch frei.
Hinweis
Benutzer sollten die -Methode nicht Dispose aufrufen. Sie können jedoch nicht verhindern, dass Benutzer die -Methode aufrufen. Wenn sie dies tun, wird daher die OnChanged -Methode aufgerufen. In diesem Fall wird der Cacheeintrag so benachrichtigt, als ob sich die Abhängigkeit geändert hat.
Um zu verhindern, dass abgeleitete Klassen Dispose die -Methode überschreiben, ist die Methode keine explizite Schnittstellenimplementierungen.
Siehe auch
Gilt für:
Dispose(Boolean)
Gibt alle verwalteten und nicht verwalteten Ressourcen und alle Verweise auf die ChangeMonitor-Instanz frei. Diese Überladung muss von abgeleiteten Änderungsüberwachungsklassen implementiert werden.
protected:
abstract void Dispose(bool disposing);
protected abstract void Dispose (bool disposing);
abstract member Dispose : bool -> unit
Protected MustOverride Sub Dispose (disposing As Boolean)
Parameter
- disposing
- Boolean
true, um verwaltete und nicht verwaltete Ressourcen sowie Verweise auf eine ChangeMonitor-Instanz freizugeben, false, um nur nicht verwaltete Ressourcen freizugeben. Wenn false übergeben wird, wird die Dispose(Boolean)-Methode von einem finalizer-Thread aufgerufen, und alle externen verwalteten Verweise sind wahrscheinlich nicht mehr gültig, da sie bereits von der Garbage Collection freigegeben wurden.
Hinweise
Wenn der Wert disposing true ist, werden alle verwalteten und nicht verwalteten Ressourcen verworfen, und alle Verweise auf dieses Objekt werden freigegeben, sodass die abgeleitete Change Monitor-Instanz zur Garbage Collection freigegeben werden kann. Es ist garantiert, dass die Dispose Basismethode die implementierte Methode nur einmal Dispose aufruft.
Hinweise für Ausführende
Ein Änderungsmonitor muss die Dispose(Boolean) -Überladung implementieren, um alle verwalteten und nicht verwalteten Ressourcen freizugeben, wenn der Wert von disposing true ist. Die Dispose(Boolean) Methodenüberladung mit dem disposing Wert wird nur einmal true aufgerufen, d. h., wenn die Instanz zum ersten Mal verworfen wird. Ein Änderungsmonitor darf die Überladung nicht Dispose(Boolean) direkt aufrufen. Ein abgeleiteter Änderungsmonitor kann die öffentliche Methode ohne Parameter Dispose() für die ChangeMonitor Basisklasse aufrufen.
Alternativ kann ein Änderungsmonitor eine Finalizermethode implementieren. In diesem Fall kann der Finalizer die -Methode aufrufen Dispose(Boolean) und ihr den Wert disposing false übergeben. Dies ist jedoch in der Regel nicht erforderlich. Die Überwachung auf Abhängigkeitsänderungen wird in der Regel von einem Dienst durchgeführt, der einen Verweis auf die Change Monitor-Instanz verwaltet. Der Verweis verhindert, dass die Instanz garbage collected wird, und macht daher eine Finalizermethode überflüssig. Wenn sich eine Abhängigkeit ändert, gibt die OnChanged(Object) Methode die Change Monitor-Instanz frei (es sei denn, die Initialisierung wurde nicht abgeschlossen), um Speicherverluste zu vermeiden.