Freigeben über


ChangeMonitor.Dispose Methode

Definition

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 instance und zugehörigen Ressourcen freizugeben. Die öffentliche Dispose Methode wird aufgerufen, um den Entsorgungsprozess mit wichtigen Lebenszyklusereignissen abgeleiteter Change-Monitor-Klassen (z. B. Initialisierung) zu koordinieren und die ChangeMonitor instance freizugeben, damit die instance gesammelt werden können. Die Dispose Methode wird von abgeleiteten Änderungsmonitorklassen implementiert, um ihre verwalteten und nicht verwalteten Ressourcen zu verwerfen.

Dispose()

Quelle:
ChangeMonitor.cs
Quelle:
ChangeMonitor.cs
Quelle:
ChangeMonitor.cs

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 der abgeleiteten Klassen nur einmal auf, beim ersten Aufruf. Nachfolgende Aufrufe der Dispose -Methode haben keine Auswirkungen. Nachdem die -Methode aufgerufen wurde, wird die IsDisposed -Eigenschaft auf truefestgelegt.

Die Dispose Überladung muss aufgerufen werden, um eine ChangeMonitor instance zu entsorgen. Im Folgenden werden die Regeln zum Aufrufen der Dispose-Methode aufgeführt:

  • Bevor ein Element in den Cache eingefügt wird, liegt es in der Verantwortung des Aufrufers, eine ChangeMonitor instance zu entsorgen.

  • Sobald das Cacheelement und die ChangeMonitor damit verknüpften Instanzen an einen Cache übergeben werden, muss der Cacheimplementierer sicherstellen, dass dieser Dispose aufgerufen wird, auch wenn der Einfügevorgang fehlschlägt.

  • Nachdem ein Element und die zugehörigen ChangeMonitor Instanzen an einen Cache übergeben wurden, darf der Aufrufer die Abhängigkeit nicht verwerfen, da der Aufruf der Dispose Methode 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 Änderungsmonitor-instance nicht in einen Cache einfügen möchten.

    • Die Cacheimplementierung ist für das Aufrufen der Dispose Überladung verantwortlich, wenn die Implementierung versucht, den Change-Monitor-instance in einen Objektcache einzufügen, aber beim Einfügen ein Fehler auftritt. Wenn der Einfügeversuch eine Ausnahme verursacht, muss die Cacheimplementierung alle zugeordneten Abhängigkeiten verwerfen.

    • Wenn der Cacheeintrag entfernt wird, muss die Cacheimplementierung auch die Abhängigkeit entfernen.

Die interne Implementierung der OnChanged Methode ruft die Dispose -Methode automatisch auf, nachdem sie einen Rückruf aufruft, der über die NotifyOnChanged -Methode registriert ist.

Hinweis

Dieses automatische Entwerfen während des Ereignisfeuers tritt nur auf, wenn die Initialisierung des ChangeMonitor instance zuvor abgeschlossen wurde.

Wenn der Konstruktor eines abgeleiteten Änderungsmonitors die InitializationComplete -Methode aufruft, wenn 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), wird InitializationComplete der Änderungsmonitor von der Methode automatisch verworfen.

Hinweis

Benutzer sollten die Dispose Methode nicht 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 die Methode überschreiben Dispose , ist die Methode keine explizite Schnittstellenimplementierung.

Weitere Informationen

Gilt für:

Dispose(Boolean)

Quelle:
ChangeMonitor.cs
Quelle:
ChangeMonitor.cs
Quelle:
ChangeMonitor.cs

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 von disposing value isttrue, werden alle verwalteten und nicht verwalteten Ressourcen verworfen, und alle Verweise auf dieses Objekt werden freigegeben, sodass der abgeleitete Änderungsmonitor instance mit Müll gesammelt werden kann. Es ist garantiert, dass die Basismethode Dispose die implementierte Dispose Methode nur einmal 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 ist true. Die Dispose(Boolean) Methodenüberladung mit dem disposing Wert von true wird nur einmal aufgerufen, nämlich, wenn die instance zum ersten Mal verworfen wird. Ein Änderungsmonitor darf die Dispose(Boolean) Überladung nicht direkt aufrufen. Ein abgeleiteter Änderungsmonitor kann die öffentliche Methode ohne Dispose() Parameter für die Basisklasse ChangeMonitor aufrufen.

Alternativ kann ein Änderungsmonitor eine Finalizermethode implementieren. In diesem Fall kann der Finalizer die Dispose(Boolean) -Methode aufrufen und ihr den disposing Wert übergeben false. Dies ist jedoch in der Regel unnötig. Die Überwachung von Abhängigkeitsänderungen wird in der Regel von einem Dienst ausgeführt, der einen Verweis auf den Änderungsmonitor instance verwaltet. Durch den Verweis wird verhindert, dass die instance mit Müll gesammelt werden, sodass eine Abschließendisierungsmethode nicht erforderlich ist. Um Speicherverluste zu vermeiden, entsorgt die Methode, wenn sich eine Abhängigkeit ändert, den OnChanged(Object) Änderungsmonitor instance (es sei denn, die Initialisierung wurde nicht abgeschlossen).

Gilt für: