ChangeMonitor.Dispose Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Liberta todos os recursos usados pela instância atual da ChangeMonitor classe.
Sobrecargas
| Name | Description |
|---|---|
| Dispose() |
Liberta todos os recursos que são usados pela instância atual da ChangeMonitor classe. |
| Dispose(Boolean) |
Liberta todos os recursos geridos e não geridos e quaisquer referências à ChangeMonitor instância. Esta sobrecarga deve ser implementada por classes derivadas de monitores de alteração. |
Observações
O Dispose método é usado para libertar a ChangeMonitor instância e os recursos relacionados. O método público Dispose é invocado para coordenar o processo de eliminação com eventos-chave do ciclo de vida das classes derivadas de monitorização de alterações (como a inicialização), e para libertar a ChangeMonitor instância para que esta possa ser recolhida de lixo. O Dispose método é implementado por classes derivadas de monitorização de alterações para eliminar os seus recursos geridos e não geridos.
Dispose()
Liberta todos os recursos que são usados pela instância atual da ChangeMonitor classe.
public:
virtual void Dispose();
public void Dispose();
abstract member Dispose : unit -> unit
override this.Dispose : unit -> unit
Public Sub Dispose ()
Implementações
Exceções
A inicialização não está completa na classe derivada de monitorização de alterações chamada método base Dispose() .
Observações
O Dispose método invoca o Dispose método das classes derivadas apenas uma vez, na primeira vez que é chamado. Chamadas subsequentes ao Dispose método não têm efeito. Depois de o método ser chamado, a IsDisposed propriedade é definida como true.
A Dispose sobrecarga deve ser chamada para eliminar uma ChangeMonitor instância. Seguem-se as regras para chamar o método disponível:
Antes de um item ser inserido na cache, é responsabilidade do chamador eliminar uma ChangeMonitor instância.
Uma vez que o item de cache e as ChangeMonitor instâncias a ele associadas são passados para uma cache, o implementador da cache deve garantir que é Dispose chamado, mesmo que o inserto falhe.
Depois de um item e as suas instâncias ChangeMonitor associadas serem passados para uma cache, o chamador não deve eliminar a dependência porque, quando o Dispose método é chamado, a chamada é tratada como se a dependência tivesse mudado. Como resultado, o OnChanged método é automaticamente invocado.
Tendo em conta estas regras, o Dispose método deve ser chamado de uma das seguintes formas:
Os utilizadores devem chamar o Dispose método de sobrecarga se decidirem não inserir a instância derivada do monitor-alteração numa cache.
A implementação da cache é responsável por chamar a Dispose sobrecarga se a implementação tentar inserir a instância do change-monitor numa cache de objetos, mas a inserção falhar. Quando a tentativa de inserção causa uma exceção, a implementação da cache deve eliminar quaisquer dependências associadas.
Se a entrada da cache for removida, a implementação da cache também deve eliminar a dependência.
A implementação interna do OnChanged método chama automaticamente o Dispose método depois de chamar um callback que é registado através do NotifyOnChanged método.
Note
Esta eliminação automática durante o disparo do evento só ocorre se a inicialização da ChangeMonitor instância tiver sido concluída anteriormente.
Quando o construtor de um monitor de alterações derivado chama o InitializationComplete método, se o estado do monitor de alterações já tiver mudado (ou seja, o estado monitorizado já tiver mudado enquanto o construtor ainda estava ativo), então InitializationComplete o método eliminará automaticamente o monitor de alteração.
Note
Os utilizadores não devem chamar o Dispose método. No entanto, não pode impedir que os utilizadores chamem o método. Portanto, se o fizerem, o OnChanged método é invocado. Nesse caso, a entrada da cache é notificada como se a dependência tivesse mudado.
Para evitar que classes derivadas sobreponham-se Dispose ao método, o método não é uma implementação explícita de interface.
Ver também
Aplica-se a
Dispose(Boolean)
Liberta todos os recursos geridos e não geridos e quaisquer referências à ChangeMonitor instância. Esta sobrecarga deve ser implementada por classes derivadas de monitores de alteração.
protected:
abstract void Dispose(bool disposing);
protected abstract void Dispose(bool disposing);
abstract member Dispose : bool -> unit
Protected MustOverride Sub Dispose (disposing As Boolean)
Parâmetros
- disposing
- Boolean
true libertar recursos geridos e não geridos e quaisquer referências a uma ChangeMonitor instância; false libertar apenas recursos não geridos. Quando false é passado, o Dispose(Boolean) método é chamado por um finalizer thread e quaisquer referências geridas externas provavelmente deixam de ser válidas porque já foram recolhidas de lixo.
Observações
Quando o valor do disposing valor é true, todos os recursos geridos e não geridos são eliminados e quaisquer referências a este objeto são libertadas para que a instância derivada do monitorizador de alterações possa ser recolhida de lixo. É garantido que o método base Dispose invocará o método implementado Dispose apenas uma vez.
Notas para Implementadores
Um monitor de alterações deve implementar a Dispose(Boolean) sobrecarga para libertar todos os recursos geridos e não geridos quando o valor de disposing é true. A Dispose(Boolean) sobrecarga de métodos que tem disposing valor de true é chamada apenas uma vez, ou seja, quando a instância é descartada pela primeira vez. Um monitor de mudança não deve chamar diretamente a Dispose(Boolean) sobrecarga. Um monitor de alterações derivado pode chamar o método público sem Dispose() parâmetros na classe base ChangeMonitor .
Em alternativa, um monitor de alterações pode implementar um método finalizador. Nesse caso, o finalizador pode invocar o Dispose(Boolean) método e passar-lhe um disposing valor de false. No entanto, isto normalmente não é necessário. A monitorização de alterações de dependência é normalmente realizada por um serviço que mantém uma referência à instância do monitorizador de alterações. A referência impede que a instância seja recolhida de lixo e, por isso, torna desnecessário um método finalizador. Para evitar fugas de memória, quando uma dependência muda, o OnChanged(Object) método elimina a instância do monitor-alteração (a menos que a inicialização não tenha terminado).