Erro em controle de tempo de execução 429 Winsock do Visual Basic e escalabilidade

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 313984
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Sumário
O controle Microsoft Winsock (Mswinsck.ocx) não foi projetado para ser criados dinamicamente em tempo de execução. Para usar esse controle, coloque-o em um formulário em tempo de design. Caso contrário, talvez você obtenha erro em tempo de execução 429, "o componente ActiveX não é possível criar objeto."

Além disso, não use o controle Winsock em ambientes de servidor, como com o Microsoft Internet Information Server (IIS) e Microsoft COM +, escalabilidade pode ser necessária.
Mais Informações

Erro em tempo de execução 429

Um aplicativo que cria o controle Winsock dinamicamente em tempo de execução através do uso de execuções de ligação inicial em tempo de design pode falhar em tempo de execução com o erro 429 se o aplicativo é executado em um computador nondevelopment (um computador que não tenha instalado do Visual Basic):
Erro em tempo de execução '429':
O componente ActiveX não é possível criar o objeto
O erro ocorre porque o computador de destino não tem as informações de licença para os objetos de controle que são usados no aplicativo. Você pode tentar definir a referência de projeto para apontar para MSWINSCK.ocx e, em seguida, gerar um pacote de implantação através do uso de Package and Deployment Wizard. Isso geraria um pacote de instalação que contém a versão correta do controle Winsock. No entanto, a chave de licença para o controle não será compilada no aplicativo, a menos que uma instância do controle é colocada em um formulário. Quando você tenta instanciar os objetos em tempo de execução, o aplicativo não tem como para fornecer a chave de licença e o código falhará. Por exemplo, o código a seguir será executado corretamente em tempo de design, mas falhará em tempo de execução em computadores que não têm instalado do Visual Basic:
Dim myWinSock As MSWinsockLib.WinsockSub Main()    ' Early binding does not work    Set myWinSock = New MSWinsockLib.Winsock    myWinSock.LocalPort = 5432        myWinSock.Listen        MsgBox ("Listening!")        myWinSock.CloseEnd Sub
portanto, você deve fornecer uma instância do controle Winsock em um formulário para que o Visual Basic pode compilar as informações de licença para o aplicativo. Você pode tornar o formulário oculto se necessário. Para fazer isso, defina a propriedade do formulário visível para "False". Em seguida, você pode preparar para a implantação. O trecho de código a seguir demonstra o método:
Dim myWinsock As MSWinsockLib.WinsockSub Main()    ' Form1 is hidden    Set myWinsock = Form1.myWinsock    myWinsock.LocalPort = 5432        myWinsock.Listen        MsgBox ("Listening!")        myWinsock.CloseEnd Sub				
como alternativa, você pode colocar um objeto de controle Winsock no designer visual de um objeto UserControl como um controle constituinte, que geralmente é feito para estender a funcionalidade do controle Winsock ou subclasse. No entanto, essa abordagem não aborda o requisito de licenciamento. Para um aplicativo usar o objeto wrapper para executar com êxito em tempo de execução, o objeto de wrapper deve ser, por fim, em um formulário.

Escalabilidade

O controle Winsock é projetado para uso em aplicativos de servidor cliente ou a luz de carga. Microsoft não suporta o uso do controle em ambientes de servidor multithreaded, especialmente no IIS e COM +, escalabilidade pode ser importante. Usando esse controle em um ambiente como pode causar problemas unpredicatible inclusive deadlocks. A Microsoft recomenda que você considerar o uso de tecnologias alternativas, como a API do Winsock e a porta de conclusão de E/S (IOCP) nesses casos.
Referências
Para obter informações adicionais, clique nos números abaixo para ler os artigos na Base de dados de Conhecimento da Microsoft:
274754INFO: Licenciamento problemas relacionados a controles de usuário criados com Visual Basic
241126INFO: Adicionar dinamicamente UserControls que requerem licenças de tempo de execução
192800INFO: Problemas de design ao usar IOCP em um servidor de Winsock

Propriedades

ID do Artigo: 313984 - Última Revisão: 12/07/2015 08:18:20 - Revisão: 3.0

Microsoft Visual Basic 5.0 Enterprise Edition, Microsoft Visual Basic Enterprise Edition for Windows 6.0, Microsoft Visual Basic 6.0 Enterprise Edition Service Pack 3, Microsoft Visual Basic 6.0 Enterprise Edition Service Pack 4, Microsoft Visual Basic 6.0 Enterprise Edition Service Pack 5, Microsoft Visual Basic 5.0 Professional Edition, Microsoft Visual Basic 6.0 Professional Edition

  • kbnosurvey kbarchive kbmt kbdswnet2003swept kbapi kbctrl kbinfo kbnetwork kbwinsock KB313984 KbMtpt
Comentários