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