Compartilhar via


ChangeMonitor.Dispose Método

Definição

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

Sobrecargas

Nome Description
Dispose()

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

Dispose(Boolean)

Libera todos os recursos gerenciados e não gerenciados e todas as ChangeMonitor referências à instância. 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 de monitor de alteração derivadas (como 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
Origem:
ChangeMonitor.cs

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

Comentários

O Dispose método invoca o Dispose método de classes derivadas apenas uma vez, na primeira vez em que é chamado. As chamadas subsequentes para o Dispose método não têm efeito. Depois que o método tiver sido 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 de descarte:

  • 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 garantir que ele Dispose seja 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 é 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 que é registrado por meio do NotifyOnChanged método.

Observação

Esse descarte automático durante a ação de disparo de 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 derivada 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) o InitializationComplete 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
Origem:
ChangeMonitor.cs

Libera todos os recursos gerenciados e não gerenciados e todas as ChangeMonitor referências à instância. 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 e quaisquer referências a uma ChangeMonitor instância; false para liberar apenas recursos não gerenciados. Quando false é passado, o Dispose(Boolean) método é chamado por um finalizer thread e as referências gerenciadas externas provavelmente não são mais válidas porque já foram coletadas 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ção deve implementar a Dispose(Boolean) sobrecarga para liberar todos os recursos gerenciados e não gerenciados quando o valor é disposingtrue. A Dispose(Boolean) sobrecarga do true método que tem um disposing valor é 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