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

Dispose()

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 que ela é chamada. As 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. A seguir estão as regras para chamar o método Dispose:

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

  • Quando o item de cache e as ChangeMonitor instâncias associadas a ele são passados para um cache, o implementador de cache que deve se certificar de que Dispose é chamado, mesmo que a inserção falhe.

  • Depois que um item e suas ChangeMonitor instâncias associadas 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 fosse 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 Dispose sobrecarga do método se decidirem não inserir a instância derivada do monitor de alterações em um cache.

    • A implementação do cache é responsável por chamar a Dispose sobrecarga se a implementação tentar inserir a instância do monitor de alteração 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 que é registrado por meio do NotifyOnChanged método.

Observação

Essa descartaçã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 chamar 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 estiver ativo), o InitializationComplete método descartará automaticamente o monitor de alterações.

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 isso for feito, o OnChanged método será invocado. Nesse caso, a entrada de cache é notificada como se a dependência fosse alterada.

Para evitar 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)

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ção possa ser coletada pelo lixo. É garantido que o método base Dispose invocará o método implementado Dispose apenas uma vez.

Notas aos Implementadores

Um monitor de alteração deve implementar a Dispose(Boolean) sobrecarga para liberar todos os recursos gerenciados e não gerenciados quando o valor de disposing for true . A Dispose(Boolean) sobrecarga do 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ções não deve chamar a Dispose(Boolean) sobrecarga diretamente. Um monitor de alteração derivado pode chamar o método público sem parâmetros Dispose() 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 como um disposing valor de false . No entanto, isso geralmente é desnecessário. O monitoramento de alterações de dependência normalmente é realizado por um serviço que mantém uma referência à instância do monitor de alteração. A referência impede que a instância seja coletada pelo lixo e, portanto, torna desnecessário um método finalizador. Para evitar vazamentos de memória, quando uma dependência é alterada, o OnChanged(Object) método descarta a instância do monitor de alteração (a menos que a inicialização não tenha sido concluída).

Aplica-se a