Udostępnij za pośrednictwem


ChangeMonitor.Dispose Metoda

Definicja

Zwalnia wszystkie zasoby używane przez bieżące wystąpienie klasy ChangeMonitor.

Przeciążenia

Dispose()

Zwalnia wszystkie zasoby używane przez bieżące wystąpienie ChangeMonitor klasy.

Dispose(Boolean)

Zwalnia wszystkie zarządzane i niezarządzane zasoby oraz wszelkie odwołania do ChangeMonitor wystąpienia. To przeciążenie musi być zaimplementowane przez pochodne klasy monitora zmian.

Uwagi

Metoda Dispose jest używana do zwolnienia ChangeMonitor wystąpienia i powiązanych zasobów. Metoda publiczna Dispose jest wywoływana w celu koordynowania procesu usuwania z kluczowymi zdarzeniami cyklu życia pochodnych klas monitora zmian (takich jak inicjowanie) i zwolnienia wystąpienia w celu usunięcia ChangeMonitor pamięci wystąpienia. Metoda Dispose jest implementowana przez pochodne klasy monitora zmian w celu usuwania zarządzanych i niezarządzanych zasobów.

Dispose()

Źródło:
ChangeMonitor.cs
Źródło:
ChangeMonitor.cs
Źródło:
ChangeMonitor.cs

Zwalnia wszystkie zasoby używane przez bieżące wystąpienie ChangeMonitor klasy.

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

Implementuje

Wyjątki

Inicjowanie nie jest kompletne w pochodnej klasie monitora zmian, która nazwała metodę bazową Dispose() .

Uwagi

Metoda Dispose wywołuje metodę Dispose klas pochodnych tylko raz, przy pierwszym wywołaniu. Kolejne wywołania Dispose metody nie mają wpływu. Po wywołaniu metody właściwość jest ustawiona IsDisposed na true.

Przeciążenie Dispose musi być wywoływane w celu usunięcia ChangeMonitor wystąpienia. Poniżej przedstawiono reguły wywoływania metody dispose:

  • Zanim element zostanie wstawiony do pamięci podręcznej, obowiązkiem obiektu wywołującego jest likwidacja ChangeMonitor wystąpienia.

  • Gdy element pamięci podręcznej i ChangeMonitor skojarzone z nim wystąpienia zostaną przekazane do pamięci podręcznej, implementator pamięci podręcznej, który musi upewnić się, że Dispose jest wywoływany, nawet jeśli wstawianie nie powiedzie się.

  • Po przekazaniu elementu i skojarzonych ChangeMonitor z nim wystąpień do pamięci podręcznej obiekt wywołujący nie może usunąć zależności, ponieważ po Dispose wywołaniu metody wywołanie jest traktowane tak, jakby zależność uległa zmianie. W związku z tym metoda jest wywoływana OnChanged automatycznie.

  • Biorąc pod uwagę te reguły, należy wywołać metodę Dispose w jeden z następujących sposobów:

    • Użytkownicy muszą wywołać Dispose przeciążenie metody, jeśli zdecydują się nie wstawić pochodnego wystąpienia monitora zmian do pamięci podręcznej.

    • Implementacja pamięci podręcznej jest odpowiedzialna za wywołanie Dispose przeciążenia, jeśli implementacja próbuje wstawić wystąpienie monitora zmian do pamięci podręcznej obiektów, ale wstawianie kończy się niepowodzeniem. Gdy próba wstawiania powoduje wyjątek, implementacja pamięci podręcznej musi usunąć wszelkie skojarzone zależności.

    • Jeśli wpis pamięci podręcznej zostanie usunięty, implementacja pamięci podręcznej musi również usunąć zależność.

Wewnętrzna implementacja OnChanged metody automatycznie wywołuje metodę Dispose po wywołaniu wywołania zwrotnego zarejestrowanego NotifyOnChanged za pośrednictwem metody .

Uwaga

Ta automatyczna likwidacja podczas wyzwalania zdarzenia ma miejsce tylko wtedy, gdy inicjowanie ChangeMonitor wystąpienia zostało wcześniej ukończone.

Gdy konstruktor monitora zmian pochodnych wywołuje InitializationComplete metodę, jeśli stan monitora zmian został już zmieniony (czyli stan monitora zmian został już zmieniony, gdy konstruktor był nadal aktywny), InitializationComplete metoda automatycznie usunie monitor zmian.

Uwaga

Użytkownicy nie powinni wywoływać Dispose metody . Nie można jednak uniemożliwić użytkownikom wywoływania metody. W związku z tym, jeśli tak, OnChanged metoda zostanie wywołana. W takim przypadku wpis pamięci podręcznej jest powiadamiany tak, jakby zależność uległa zmianie.

Aby zapobiec zastępowaniu Dispose metody pochodnej, metoda nie jest jawną implementacją interfejsu.

Zobacz też

Dotyczy

Dispose(Boolean)

Źródło:
ChangeMonitor.cs
Źródło:
ChangeMonitor.cs
Źródło:
ChangeMonitor.cs

Zwalnia wszystkie zarządzane i niezarządzane zasoby oraz wszelkie odwołania do ChangeMonitor wystąpienia. To przeciążenie musi być zaimplementowane przez pochodne klasy monitora zmian.

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 aby zwolnić zarządzane i niezarządzane zasoby oraz wszelkie odwołania do ChangeMonitor wystąpienia; false zwalniać tylko niezarządzane zasoby. Po false przekazaniu metoda jest wywoływana przez wątekfinalizer, a wszystkie odwołania zarządzane zewnętrznie prawdopodobnie nie są już prawidłowe, Dispose(Boolean) ponieważ zostały już odśmiecane.

Uwagi

Gdy wartość wartości disposing to true, wszystkie zarządzane i niezarządzane zasoby są usuwane, a wszystkie odwołania do tego obiektu są zwalniane, aby pochodne wystąpienie monitora zmian mogły zostać usunięte. Gwarantuje się, że metoda podstawowa Dispose wywoła zaimplementowaną Dispose metodę tylko raz.

Uwagi dotyczące implementowania

Monitor zmian musi zaimplementować przeciążenie, Dispose(Boolean) aby zwolnić wszystkie zarządzane i niezarządzane zasoby, gdy wartość disposing to true. Przeciążenie Dispose(Boolean) metody, które ma disposing wartość true , jest wywoływane tylko raz, a mianowicie, gdy wystąpienie jest usuwane po raz pierwszy. Monitor zmian nie może wywoływać przeciążenia Dispose(Boolean) bezpośrednio. Monitor zmian pochodnych może wywołać metodę bez parametrów Dispose() publicznych w klasie bazowej ChangeMonitor .

Alternatywnie monitor zmian może zaimplementować metodę finalizatora. W takim przypadku finalizator może wywołać metodę Dispose(Boolean) i przekazać jej disposing wartość .false Jest to jednak zwykle niepotrzebne. Monitorowanie zmian zależności jest zwykle wykonywane przez usługę, która utrzymuje odwołanie do wystąpienia monitora zmian. Odwołanie zapobiega zbieraniu pamięci wystąpienia, a zatem sprawia, że metoda finalizatora jest niepotrzebna. Aby uniknąć przecieków pamięci, gdy zależność ulegnie zmianie, OnChanged(Object) metoda usuwa wystąpienie monitora zmian (chyba że inicjowanie nie zostało zakończone).

Dotyczy