ChangeMonitor.Dispose Método

Definição

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).

Aplica-se a