Partilhar via


ChangeMonitor.Dispose Método

Definição

Libera todos os recursos usados pela instância atual da classe ChangeMonitor.

Sobrecargas

Dispose()

Libera todos os recursos usados pela instância atual da classe ChangeMonitor.

Dispose(Boolean)

Libera todos os recursos gerenciados e não gerenciados e todas as referências à instância de ChangeMonitor. Essa sobrecarga deve ser implementada por classes de monitor de alteração derivadas.

Comentários

O Dispose método é usado para liberar a ChangeMonitor instância e os recursos relacionados. O método público Dispose é invocado para coordenar o processo de descarte com os principais eventos de ciclo de vida de classes derivadas do monitor de alterações (como a inicialização) e para liberar a ChangeMonitor instância para que a instância possa ser coletada de lixo. O Dispose método é implementado por classes de monitor de alterações derivadas para descartar seus recursos gerenciados e não gerenciados.

Dispose()

Origem:
ChangeMonitor.cs
Origem:
ChangeMonitor.cs
Origem:
ChangeMonitor.cs

Libera todos os recursos usados pela instância atual da classe ChangeMonitor.

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á concluída na classe do monitor de alteração derivada que chamou o método Dispose() de base.

Comentários

O Dispose método invoca o Dispose método de classes derivadas apenas uma vez, na primeira vez em que é chamado. Chamadas subsequentes para o Dispose método não têm efeito. Depois que o método for chamado, a IsDisposed propriedade será definida como true.

A Dispose sobrecarga deve ser chamada para descartar uma ChangeMonitor instância. Veja a seguir as regras para chamar o método dispose:

  • Antes que um item seja inserido no cache, é responsabilidade do chamador descartar uma ChangeMonitor instância.

  • Depois que o item de cache e as ChangeMonitor instâncias associadas a ele forem passados para um cache, o implementador de cache deve ter certeza de que Dispose é chamado, mesmo que a inserção falhe.

  • Depois que um item e suas instâncias associadas ChangeMonitor são passados para um cache, o chamador não deve descartar a dependência porque, quando o Dispose método é chamado, a chamada é tratada como se a dependência tivesse sido alterada. Como resultado, o OnChanged método é invocado automaticamente.

  • Levando essas regras em consideração, o Dispose método deve ser chamado de uma das seguintes maneiras:

    • Os usuários devem chamar a sobrecarga do Dispose método se decidirem não inserir a instância derivada do monitor de alterações em um cache.

    • A implementação do cache será responsável por chamar a Dispose sobrecarga se a implementação tentar inserir a instância do monitor de alterações em um cache de objetos, mas a inserção falhar. Quando a tentativa de inserção causa uma exceção, a implementação do cache deve descartar quaisquer dependências associadas.

    • Se a entrada de cache for removida, a implementação do cache também deverá descartar a dependência.

A implementação interna do OnChanged método chama automaticamente o Dispose método depois que ele chama um retorno de chamada registrado por meio do NotifyOnChanged método .

Observação

Essa eliminação automática durante o acionamento do evento só ocorrerá se a inicialização da ChangeMonitor instância tiver sido concluída anteriormente.

Quando o construtor de um monitor de alteração derivado chama o InitializationComplete método , se o estado do monitor de alteração já tiver sido alterado (ou seja, o estado monitorado já foi alterado quando o construtor ainda estava ativo), InitializationComplete o método descartará automaticamente o monitor de alteração.

Observação

Os usuários não devem chamar o Dispose método . No entanto, você não pode impedir que os usuários chamem o método . Portanto, se o fizerem, o OnChanged método será invocado. Nesse caso, a entrada de cache é notificada como se a dependência tivesse sido alterada.

Para impedir que classes derivadas substituam Dispose o método, o método não é uma implementação de interface explícita.

Confira também

Aplica-se a

Dispose(Boolean)

Origem:
ChangeMonitor.cs
Origem:
ChangeMonitor.cs
Origem:
ChangeMonitor.cs

Libera todos os recursos gerenciados e não gerenciados e todas as referências à instância de ChangeMonitor. Essa sobrecarga deve ser implementada por classes de monitor de alteração derivadas.

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 para liberar recursos gerenciados e não gerenciados, bem como referências a uma instância de ChangeMonitor; false para liberar apenas recursos não gerenciados. Quando false é passado, o método Dispose(Boolean) é chamado por um thread finalizer e qualquer referência gerenciada externa provavelmente deixa de ser válida porque já foi coletada pelo coletor de lixo.

Comentários

Quando o valor do disposing valor é true, todos os recursos gerenciados e não gerenciados são descartados e todas as referências a esse objeto são liberadas para que a instância derivada do monitor de alterações possa ser coletada de lixo. É garantido que o método base Dispose invocará o método implementado Dispose apenas uma vez.

Notas aos Implementadores

Um monitor de alterações deve implementar a Dispose(Boolean) sobrecarga para liberar todos os recursos gerenciados e não gerenciados quando o valor de disposing é true. A Dispose(Boolean) sobrecarga de método que tem um disposing valor de true é chamada apenas uma vez, ou seja, quando a instância é descartada pela primeira vez. Um monitor de alteração não deve chamar a Dispose(Boolean) sobrecarga diretamente. Um monitor de alteração derivado pode chamar o método público sem Dispose() parâmetros na classe base ChangeMonitor .

Como alternativa, um monitor de alteração pode implementar um método de finalizador. Nesse caso, o finalizador pode invocar o Dispose(Boolean) método e passá-lo um disposing valor de false. No entanto, isso geralmente é desnecessário. Normalmente, o monitoramento de alterações de dependência é executado por um serviço que mantém uma referência à instância do monitor de alterações. A referência impede que a instância seja coletada de lixo e, portanto, torna um método de finalizador desnecessário. Para evitar vazamentos de memória, quando uma dependência é alterada, o OnChanged(Object) método descarta a instância do monitor de alterações (a menos que a inicialização não tenha sido concluída).

Aplica-se a