Partilhar via


Inicialização e encerramento dos componentes

Your component is initialized by its constructor (SubNew in Visual Basic) and destroyed by its destructor (SubFinalizein Visual Basic).Construtor do seu componente é chamado quando uma instância do seu componente é criada; o construtor não pode ser chamado a partir de então.O destruidor é chamado pouco antes de seu componente é destruído pelo lixo coleção e sua memória é recuperada.

Observação sobre o Visual Basic:

Nas versões anteriores do Visual Basic, o Initialize e Terminate eventos servido a mesma finalidade sistema autônomo construtor e destruidor.

Aguardando lixo coleção

O common linguagem tempo de execução chama destruidor do seu componente após o lixo coleção determina que o componente não pode ser contatado por qualquer código em execução.Isso ocorre se todas as referências ao componente foram lançadas ou se as referências apenas para seu componente são mantidas por objetos que estejam isolados da mesma forma de todo o código em execução — por exemplo, no caso de referências circulares.

Como pode haver um atraso entre o momento quando um usuário terminar com o componente e o momento quando seu destruidor é chamado, uma etapa adicional é introduzida no tempo de vida de componentes do .NET estrutura: Se seu componente adquirir recursos do sistema, sistema autônomo conexões de banco de dados ou sistema autônomo alças de objetos do sistema Windows, você deve implementar o IDisposable interface e fornecer um Dispose método para que podem escolher sistema autônomo usuários do seu componente quando versão esses recursos.

Ciclo de vida de um componente

Tipo de inicialização: Quando a primeira instância do seu componente é criada, o primeiro código que executa é qualquer código de inicialização compartilhados.Uma referência a qualquer membro compartilhado também fará com que o construtor compartilhado para executar.This includes any shared fields (member variables) that are initialized, and the shared constructor (SharedSubNew) if it exists.O código a seguir, uma fonte de referência é criada para toda a turma.

Observação:

A palavra-chave translation from VPE for Csharp que corresponde ao Shared é static, que é para não ser confundido com o Static palavra-chave no Visual Basic.

Quando você deve implementar um método Dispose?

Se seu componente herda de Component, uma implementação padrão de Dispose é fornecida. Essa implementação pode ser substituída para fornecer o código de limpeza personalizado.Se você estiver criando o seu componente com a criação de uma implementação personalizada de IComponent, você deve implementar IDisposable para fornecer um Dispose método para seu componente.

Seu componente precisar um Dispose método se aloca objetos do sistema, conexões de banco de dados ou outros recursos escassos que deve ser liberado assim que um usuário é concluído com o componente.

Você também deve implementar um Dispose método se seu componente contém referências a outros objetos que possuem Dispose métodos.

Por que implementar Dispose?

Dependendo da atividade do sistema, um intervalo imprevisível pode decorrer entre o momento em que um usuário termina de usar o componente e o time de lixo coleção detecta que o código do componente está inacessível.Se você não fornecer um Dispose método, seu componente continuará a armazenar seus recursos durante esse intervalo.

Um cenário worst-caso

Imagine um componente de servidor que usa uma conexão de banco de dados e não possui um Dispose método. Em um servidor com uma grande quantidade de memória, você pode criar e liberar muitas instâncias do componente sem ter muito impacto na memória disponível.Nesse caso, coleta de lixo não pode destruir os componentes por algum time após o lançamento do são referências a eles.

Eventualmente, todas as conexões de banco de dados disponível podem ser vinculadas pelos componentes que tinham sido liberados, mas não destruídos.Mesmo que o servidor não tivesse nenhuma falta de memória, pode ser incapaz de responder às solicitações dos usuários.

Consulte também

Tarefas

Como: Criar e configurar componentes no modo de design

Conceitos

Características da classe de componente

Componente Instancing Changes in Visual Basic

Referência

Dispose

Finalize