ChangeMonitor.Dispose Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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).