ChangeMonitor.Dispose Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Rilascia tutte le risorse usate dall'istanza corrente della classe ChangeMonitor.
Overload
Dispose() |
Rilascia tutte le risorse usate dall'istanza corrente della classe ChangeMonitor. |
Dispose(Boolean) |
Rilascia tutte le risorse gestite e non gestite ed eventuali riferimenti all'istanza di ChangeMonitor. Questo overload deve essere implementato dalle classi derivate di monitoraggio delle modifiche. |
Commenti
Il Dispose metodo viene usato per rilasciare l'istanza e le ChangeMonitor risorse correlate. Il metodo pubblico Dispose viene richiamato per coordinare il processo di smaltimento con gli eventi chiave del ciclo di vita delle classi di monitoraggio delle modifiche derivate (ad esempio l'inizializzazione) e per rilasciare l'istanza in modo che l'istanza ChangeMonitor possa essere garbage collection. Il Dispose metodo viene implementato dalle classi di monitoraggio modifiche derivate per eliminare le risorse gestite e non gestite.
Dispose()
- Origine:
- ChangeMonitor.cs
- Origine:
- ChangeMonitor.cs
- Origine:
- ChangeMonitor.cs
Rilascia tutte le risorse usate dall'istanza corrente della classe ChangeMonitor.
public:
virtual void Dispose();
public void Dispose ();
abstract member Dispose : unit -> unit
override this.Dispose : unit -> unit
Public Sub Dispose ()
Implementazioni
Eccezioni
L'inizializzazione non è completa nella classe derivata di monitoraggio delle modifiche che ha chiamato il metodo di base Dispose().
Commenti
Il Dispose metodo richiama il Dispose metodo delle classi derivate una sola volta, la prima volta che viene chiamata. Le chiamate successive al Dispose metodo non hanno alcun effetto. Dopo aver chiamato il metodo, la IsDisposed proprietà è impostata su true
.
L'overload deve essere chiamato per eliminare un'istanza DisposeChangeMonitor . Di seguito sono riportate le regole per chiamare il metodo dispose:
Prima che un elemento venga inserito nella cache, è responsabilità del chiamante eliminare un'istanza ChangeMonitor .
Dopo aver passato l'elemento della cache e le ChangeMonitor istanze associate a una cache, l'implementazione della cache che deve assicurarsi che Dispose venga chiamata, anche se l'inserimento ha esito negativo.
Dopo aver passato un elemento e le relative istanze associate ChangeMonitor a una cache, il chiamante non deve eliminare la dipendenza perché quando viene chiamato il metodo, la chiamata viene considerata come se la Dispose dipendenza è cambiata. Di conseguenza, il OnChanged metodo viene richiamato automaticamente.
Prendendo in considerazione queste regole, il Dispose metodo deve essere chiamato in uno dei modi seguenti:
Gli utenti devono chiamare l'overload del metodo se decidono di non inserire l'istanza Dispose derivata di change-monitor in una cache.
L'implementazione della cache è responsabile della chiamata all'overload se l'implementazione tenta di inserire l'istanza Dispose di change-monitor in una cache di oggetti, ma l'inserimento ha esito negativo. Quando il tentativo di inserimento causa un'eccezione, l'implementazione della cache deve eliminare eventuali dipendenze associate.
Se la voce della cache viene rimossa, l'implementazione della cache deve anche eliminare la dipendenza.
L'implementazione interna del OnChanged metodo chiama automaticamente il Dispose metodo dopo che chiama un callback registrato tramite il NotifyOnChanged metodo .
Nota
Questo eliminazione automatica durante l'attivazione dell'evento si verifica solo se l'inizializzazione dell'istanza ChangeMonitor è stata completata in precedenza.
Quando un costruttore di Monitoraggio modifiche derivato chiama il InitializationComplete metodo, se lo stato del monitoraggio delle modifiche è già cambiato, ovvero lo stato monitorato è già stato modificato quando il costruttore è ancora attivo, InitializationComplete il metodo eliminerà automaticamente il monitoraggio delle modifiche.
Nota
Gli utenti non devono chiamare il Dispose metodo. Tuttavia, non è possibile impedire agli utenti di chiamare il metodo. Pertanto, se lo fanno, il OnChanged metodo viene richiamato. In tal caso, la voce della cache viene notificata come se la dipendenza sia stata modificata.
Per impedire alle classi derivate di eseguire l'override Dispose del metodo, il metodo non è un'implementazione esplicita dell'interfaccia.
Vedi anche
Si applica a
Dispose(Boolean)
- Origine:
- ChangeMonitor.cs
- Origine:
- ChangeMonitor.cs
- Origine:
- ChangeMonitor.cs
Rilascia tutte le risorse gestite e non gestite ed eventuali riferimenti all'istanza di ChangeMonitor. Questo overload deve essere implementato dalle classi derivate di monitoraggio delle modifiche.
protected:
abstract void Dispose(bool disposing);
protected abstract void Dispose (bool disposing);
abstract member Dispose : bool -> unit
Protected MustOverride Sub Dispose (disposing As Boolean)
Parametri
- disposing
- Boolean
true
per rilasciare le risorse gestite e non gestite ed eventuali riferimenti a un'istanza di ChangeMonitor. false
per rilasciare solo le risorse non gestite. Quando viene passato false
, il metodo Dispose(Boolean) viene chiamato da un thread finalizer
e i riferimenti gestiti esterni probabilmente non sono più validi perché sono già stati raccolti nel Garbage Collector.
Commenti
Quando il valore è disposing
true
, tutte le risorse gestite e non gestite vengono eliminate e tutti i riferimenti a questo oggetto vengono rilasciati in modo che l'istanza di monitoraggio modifiche derivata possa essere garbage collection. È garantito che il metodo di base Dispose richiamerà il metodo implementato Dispose una sola volta.
Note per gli implementatori
Un monitoraggio delle modifiche deve implementare l'overload Dispose(Boolean) per rilasciare tutte le risorse gestite e non gestite quando il valore di disposing
è true
. L'overload Dispose(Boolean) del metodo con valore disposing
di true
viene chiamato una sola volta, ovvero quando l'istanza viene eliminata per la prima volta. Un monitoraggio delle modifiche non deve chiamare direttamente l'overload Dispose(Boolean) . Un monitoraggio delle modifiche derivato può chiamare il metodo pubblico senza Dispose() parametri nella classe base ChangeMonitor .
In alternativa, un monitoraggio delle modifiche può implementare un metodo di finalizzazione. In tal caso, il finalizzatore può richiamare il Dispose(Boolean) metodo e passarlo un disposing
valore di false
. Tuttavia, questo è in genere non necessario. Il monitoraggio delle modifiche alle dipendenze viene in genere eseguito da un servizio che gestisce un riferimento all'istanza di change-monitor. Il riferimento impedisce la garbage collection dell'istanza e quindi rende un metodo di finalizzazione non necessario. Per evitare perdite di memoria, quando viene modificata una dipendenza, il OnChanged(Object) metodo elimina l'istanza di change-monitor (a meno che l'inizializzazione non sia stata completata).