Compartilhar via


Demonstra Passo a passo: Criação de um componente com translation from VPE for Csharp Visual

Componentes fornecem código reutilizável na forma de objetos.Um aplicativo que usa o código do componente, criando objetos e chamando seus métodos e propriedades, é conhecido sistema autônomo um cliente.Um cliente pode ou não ser no mesmo assembly sistema autônomo um componente usa.

Os procedimentos a seguir base entre si, portanto, a ordem em que você executa é importante.

Observação:

As caixas de diálogo e comandos de menu demonstradas podem ser diferentes daqueles descritas na Ajuda, dependendo das configurações ativas ou configurações de edição.Para alterar as configurações, escolher Importar e exportar configurações on the Ferramentas menu.Para obter mais informações, consulte Configurações do Visual Studio.

Criando o projeto

Para criar a biblioteca de classes CDemoLib e o componente CDemo

  1. From a Arquivo menu, selecionar Novo and then Projeto para em em aberto o Novo projeto da caixa de diálogo.selecionar o biblioteca de classes projeto modelo a partir da lista de Visual C# tipos de projeto e digite CDemoLib in the Nome box.

    Observação:

    Sempre especifique o nome de um novo projeto ao criá-la.Isso define o namespace raiz, o nome do assembly e o nome do projeto e também garante que o componente padrão no espaço para nome correto.

  2. In O gerenciador de soluções, clicar com o botão direito do mouse em CDemoLib e selecionar Propriedades no menu de atalho.Observe que o Espaço para nome padrão caixa contém CDemoLib.

    O namespace principal é usado para qualificar os nomes dos componentes no conjunto de módulos (assembly).Por exemplo, se dois assemblies oferecem componentes chamados CDemo, você pode especificar seu CDemo usando o componente CDemoLib.CDemo.

    fechar a caixa de diálogo.

  3. From a Projeto menu, escolher Adicionar componente.

  4. No Adicionar novo item caixa de diálogo de de seleçãoClasse de componente and type CDemo.cs in the Nome box.clicar Adicionar para criar o componente.

    Um componente chamado CDemo é adicionado à sua biblioteca de classes.

  5. In O gerenciador de soluções, clicar com o botão direito do mouse em CDemo.cs e escolherExibir código no menu de atalho.O editor de código se abre.

    Observe o : Component imediatamente após public partial class CDemo. Esta seção designa a classe da qual herda sua classe.Por padrão, um componente herda o Component classe fornecida pelo sistema. The Component classe fornece muitos recursos para seu componente, incluindo a capacidade de usar os designers.

  6. In O gerenciador de soluções, clicar com o botão direito do mouse em Class1.cs e escolherExcluir.Isso exclui a classe padrão que é fornecida com a biblioteca de classes, não será usado nesta explicação passo a passo.

  7. From a Arquivo menu, escolher Salvar todos para salvar o projeto.

Adicionar Constructors and Destructors

Construtores de controle a maneira como o componente é inicializado; a Finalize método controla a maneira como ele tears para baixo. O código no construtor e o Finalize método para o CDemo classe mantém uma contagem de execução do número de CDemo objetos existência.

Para adicionar código para o construtor e destruidor da classe CDemo

  1. No Editor de código, adicionar variáveis de membro para manter um em funcionamento total de instâncias do CDemo classe e um número de ID para cada instância.

    public readonly int InstanceID;
    private static int NextInstanceID = 0;
    private static long ClassInstanceCount = 0;
    

    Porque o InstanceCount e NextInstanceID variáveis de membro são declaradas static, eles existem somente no nível de classe. Todas as ocorrências de CDemo que acessar esses membros usará os mesmos locais de memória. Membros estático serão inicializados na primeira time o CDemo classe é chamado no código. Isso pode ser a primeira time um CDemo objeto é criado, ou o primeiro time um dos membros estático é acessado.

  2. localizar public CDemo() e public CDemo(IContainer container), os construtores padrão para o CDemo classe. In Visual C#, todos sistema autônomo construtores têm o mesmo nome de classe. O componente pode ter vários construtores com parâmetros diferentes, mas devem todos ter o mesmo nome de seu componente.

    Observação:

    O nível de acesso dos construtores determina quais os clientes poderão criar instâncias da classe.

  3. Adicione o seguinte código para public CDemo(), para incrementar a contagem de instância quando uma nova CDemo é criado e para conjunto o número de ID de instância.

    Observação:

    Sempre adicione seu código após a telefonar para InitializeComponent.Neste ponto, quaisquer componentes constituintes foram inicializados.

    InstanceID = NextInstanceID ++;
    ClassInstanceCount ++;
    

    sistema autônomo a readonly membro, InstanceID pode ser definida somente no construtor.

    Observação:

    Usuários familiarizados com multithreading serão destaque bastante corretamente essa atribuição InstanceID e incrementando NextInstanceID deve ser uma operação atômica. Este e outros problemas relacionados ao threading são ilustrados no Demonstra Passo a passo: Criação de um componente Multithreaded Simples com o Visual C#.

  4. Adicione o seguinte método após o participante do construtor:

    ~CDemo()
    {
       ClassInstanceCount --;
    }
    

    Esse método é chamado um destruidor e é representado pelo caractere de til (~) na frente do nome de classe.O Gerenciador de memória chama o destruidor logo antes de ele finalmente recupera memória ocupada pelo CDemo objeto. Implementando um destruidor, você pode executar limpeza apenas antes que seu componente é removido da memória.No entanto, sistema autônomo você verá posteriormente neste passo-a-passo, há mercadoria motivos para liberar recursos anteriormente.

Adicionando uma propriedade à classe

The CDemo classe possui apenas uma propriedade, uma propriedade estática permite que o cliente descobrir como muitos CDemo objetos há na memória, a qualquer momento. Métodos podem ser criados de forma semelhante.

Para criar uma propriedade para a classe CDemo

  • Adicione a seguinte declaração de propriedade para o CDemo classe, para permitir que os clientes recuperar o número de instâncias CDemo.

    public static long InstanceCount
       {
          get
          {
             return ClassInstanceCount;
          }
       }
    

Teste o componente

Para testar o componente, você precisa de um projeto que o utiliza.Este projeto deve ser o primeiro projeto que é iniciado quando você pressiona o botão Executar.

Para adicionar o projeto de cliente CDemoTest sistema autônomo o projeto de inicialização para a solução

  1. From a Arquivo , aponte para Adicionar e escolherNovo projeto para em em aberto o Adicionar novo projeto caixa de diálogo.

  2. selecionar o aplicativos do Windows modelo de projeto e do tipo CDemoTest in the Nome e, em seguida, clicar OK.

  3. In O gerenciador de soluções, clicar com o botão direito do mouse em CDemoTest e clique em conjunto sistema autônomo projeto de inicialização no menu de atalho.

Para usar o CDemo componente, o projeto de teste do cliente deve ter uma referência para o projeto de biblioteca de classes. Depois de adicionar a referência, é uma mercadoria idéia para adicionar um using demonstrativo para o aplicativo de teste para simplificar o uso do componente.

Para adicionar uma referência para o projeto de biblioteca de classes

  1. In O gerenciador de soluções, clicar com o botão direito do mouse o Referências nó imediatamente abaixo CDemoTeste selecionar Adicionar referência no menu de atalho.

  2. No Adicionar referência diálogo, selecionar o Projetos guia.

  3. clicar duas vezes o CDemoLibprojeto de biblioteca de classes .CDemoLib aparecerá sob o Referências nó de a CDemoTestprojeto .

  4. In O gerenciador de soluções, clicar com o botão direito do mouse em Form1.cs e selecionar Exibir código no menu de atalho.

Adicionar a referência de CDemoLib permite que você use o nome totalmente qualificado das CDemo componente — ou seja, CDemoLib.CDemo.

Para adicionar um usando demonstrativo

  • Adicione o seguinte using demonstrativo à lista de using instruções na parte superior das Editor de código for Form1.

    using CDemoLib;
    

    Adicionando o using demonstrativo permite que você omitir o nome da biblioteca e referir-se o tipo de componente sistema autônomo CDemo.

    Agora será crie e use um programa de teste para testar seu componente.

Noções básicas sobre objeto tempo de vida

The CDemoTest programa irá ilustrar a tempo de vida do objeto no .NET estrutura Criando e liberando o grande número de CDemo objetos.

Para adicionar código para criar e liberar objetos CDemo

  1. clicar Form1.cs [Design para retornar ao designer.

  2. arrastar um Button e um Timer do Todos os Windows Forms Guia de do Caixa de ferramentas onto the Form1 área de design.

    O não visuais Timer componente aparece em uma área de design separadas abaixo do formulário.

  3. clicar duas vezes no ícone de timer1 Para criar um método de manipulação de eventos para o componente de timer1 Tick evento. Coloque o código a seguir no evento-método de manipulação.

    this.Text = "CDemo instances: " + CDemo.InstanceCount;
    

    Em cada tique do timer, a legenda do formulário exibirá a contagem corrente de instância para o CDemo classe. O nome de classe é usado sistema autônomo um qualificador para o estáticoInstanceCount propriedade — não é necessário criar uma instância de CDemo para acessar um membro estático.

  4. localizar o construtor para Form1 (public Form1()) e adicione o seguinte código após a telefonar para InitializeComponent().

    timer1.Enabled = true;
    

    Isso irá iniciar o timer assim que o formulário é criado.

  5. clicar no Form1.cs [Design guia para retornar ao designer.

  6. clicar duas vezes o Button em Form1, para criar um método de tratamento de evento do botão Click evento. Coloque o código a seguir no evento-método de manipulação.

    CDemo cd;
    int ct;
    for (ct = 0; ct < 1000; ct++)
       cd = new CDemo();
    

    Esse código pode parecer estranho para você.sistema autônomo cada instância de CDemo é criado, a instância anterior seja liberada. Quando o for loop é feita, haverá somente uma instância de CDemo à esquerda. Quando o método de manipulação de eventos é encerrado, mesmo que instância será lançada, porque a variável cd irá fora do escopo.

    sistema autônomo você pode ter adivinhado já, sistema autônomo coisas não acontecerá muito dessa maneira.

Para executar e depurar projetos CDemoTest e CDemo

  1. Pressione F5 para iniciar a solução.

    O projeto de cliente for iniciado e Form1 será exibida. Observe que a legenda do formulário exibe "CDemo instâncias: 0".

  2. Clique no botão.A legenda do formulário deve exibir "CDemo instâncias: 1000".

    As instâncias de CDemo foram que todos liberados pelo time do botão Click procedimento de tratamento de evento concluído. Por que eles ainda não tiver sido finalizados?Em resumo, o Gerenciador de memória finaliza objetos em segundo plano, com prioridade baixa.A prioridade será aumentada apenas em se o sistema ficar pouco memória.Este lenta lixo coleção esquema permite a alocação do objeto muito rápida.

  3. clicar no botão mais várias vezes, observando a legenda.Em algum momento, o número de instâncias de repente descartará.Isso significa que o Gerenciador de memória foi recuperada a memória de alguns dos objetos.

    Observação:

    Caso tenha clicado em mais de 10 vezes e o número de CDemo instâncias diminuiu, talvez seja necessário ajustar o código para que ela usa mais memória. fechar o formulário para retornar para o ambiente de desenvolvimento e aumentar o número de iterações no for loop para 10000. Em seguida, execute novamente o projeto.

  4. Repetir a etapa 3.Você obterá bem isso time antes da memória Gerenciador finaliza mais objetos.

    Na verdade, sempre que você Repetir a etapa 3, você provavelmente poderá alocar mais CDemo objetos antes das etapas do Gerenciador de memória. Isso ocorre porque mais e mais Visual Studio é trocado, deixando mais espaço para instâncias de CDemo.

  5. fechar o formulário para retornar para o ambiente de desenvolvimento.

Consulte também

Outros recursos

Programando com Componentes

Walkthroughs autoria de componente