Exemplo do AutoThread: Demonstra o uso do CAtlAutoThreadModule
O exemplo AutoThread demonstra o uso de CAtlAutoThreadModule. O servidor é implementado no arquivo Server.exe.O módulo do EXE é derivado de CAtlAutoThreadModule em vez de CAtlModule.
The Exemplo de atributos AutoThread é a versão atribuída neste exemplo.
Observação de segurança: |
---|
Este código de exemplo é fornecido para ilustrar um conceito e não deve ser usado em aplicativos ou sites da Web, pois ele não pode ilustrar sistema autônomo práticas de codificação mais seguras.Microsoft sistema autônomo sumes nenhuma responsabilidade por danos incidentais ou conseqüenciais deve o código de exemplo ser usado para fins diferentes de sistema autônomo se destina. |
Para obter exemplos e instruções para instalá-los:
Sobre o Visual Studio Ajuda menu, clicar Exemplos.
Para obter mais informações, consulte Localizando arquivos de exemplo.
A versão mais recente e a lista completa das Exemplos está disponível online a partir de O Visual Studio 2008 Exemplos página.
Você também pode localizar exemplos no disco rígido do seu computador.Por padrão, exemplos e um arquivo Leiame são copiados para uma pasta sob \programa Files\Visual Studio 9.0\Samples\.Para edições Express do Visual Studio, todos os exemplos estão localizados online.
Criando e executando o exemplo
Para compilação e executar esse exemplo
Abra o arquivo da solução AutoThread.sln.
From a Compilação menu, clicar Criar solução.Será criar e registrar o cliente e o servidor.
Inicie duas instâncias do contêiner de teste do controle ActiveX.See Teste de propriedades e eventos com o contêiner de teste para obter informações sobre como acessar o contêiner de teste.
Insira um dos controles de cliente (classe AutoCtl) em cada um dos recipientes de teste.
clicar um dos controles e observe que leva um segundo para o servidor para retornar.
Posicione e redimensione os contêiners de teste para que ambos fiquem visíveis ao mesmo time.
clicar um dos controles e clicar rapidamente o Outros controle.Observe que eles Concluir aguardando aproximadamente ao mesmo time.(If CAtlAutoThreadModule não foram usadas, o primeiro controle deve terminar após um segundo, mas o segundo controle não deve terminar enquanto um segundo completo após o primeiro controle. A segunda telefonar para o estado de suspensão não ocorrerá até que a primeira tivesse terminado.) Você pode usar o atraso(PropGet) and atraso(PropPut) métodos para ajustar o número de milissegundos que o servidor dorme para.Se definidas corretamente, a segunda telefonar para o estado de suspensão poderá retornar antes da primeira telefonar no modo de suspensão.
Como funciona o exemplo
A interface de servidor possui um único método: Sleep.Este método coloca o servidor thread dormir durante um determinado período de time.A parte cliente do exemplo é um controle ActiveX que invoca o método de suspensão do servidor quando o usuário clica no controle.O cliente também tem uma propriedade nomeada Atraso que representa o quanto o segmento do servidor será de suspensão.O controle exibe o texto "Pronto" quando está aguardando a conclusão de um clicar do usuário.O texto "Espera" é exibida quando o controle está aguardando que o servidor concluir a dormindo.
Palavras-chave
Este exemplo utiliza as seguintes palavras-chave:
AtlGetObjectSourceInterface BEGIN_SINK_MAP CoCreateInstance; DECLARE_CLASSFACTORY_SINGLETON; IDispEventSimpleImpl::DispEventAdvise; END_SINK_MAP; IConnectionPointContainerImpl; IConnectionPointImpl; IDispEventImpl; OLE2CT; SINK_ENTRY_EX; SysAllocString; USES_CONVERSION; VARIANT; VariantClear; VariantCopy