Artigo: 313984 - Última revisão: quinta-feira, 19 de Maio de 2005 - Revisão: 3.0

Controlo de Winsock do Visual Basic run-time error 429 e escalabilidade

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.

Nesta página

Expandir tudo | Reduzir tudo

Sumário

O controlo Winsock da Microsoft (Mswinsck.ocx) não foi concebido para ser criada dinamicamente em tempo de execução. Para utilizar este controlo, coloque-o num formulário no momento da concepção. Caso contrário, poderá obter run-time error 429, "o componente ActiveX não é possível criar o objecto."

Além disso, não utilize o controlo Winsock em ambientes de servidor, como, por exemplo, com o Microsoft Internet Information Server (IIS) e Microsoft COM +, onde a escalabilidade pode ser necessária.

Mais Informação

Run-Time Error 429

Uma aplicação que cria o controlo Winsock dinamicamente durante a execução através da utilização de sequências de enlace antecipado no momento da estruturação pode falhar em tempo de execução com o erro 429 se a aplicação for executada num computador nondevelopment (um computador que não tenha instalado do Visual Basic):
Erro de tempo de execução '429':
O componente ActiveX não é possível criar o objecto
O erro ocorre porque o computador de destino faltam as informações de licença para os objectos de controlo que são utilizados na aplicação. Pode tentar definir a referência de projecto para apontar MSWINSCK.ocx e, em seguida, gerar um pacote de implementação através da utilização de Package and Deployment Wizard. Isto iria gerar um pacote de configuração que contém a versão correcta do controlo Winsock. No entanto, a chave de licença para o controlo deve não ser compilada para a aplicação, a menos que uma instância do controlo é colocada num formulário. Quando tenta instanciar objectos em tempo de execução, a aplicação não tem maneira para fornecer a chave de licença e o código irá falhar. Por exemplo, o seguinte código será executado correctamente durante a concepção, mas irá falhar em tempo de execução em computadores que não tenham instalado do Visual Basic:
Dim myWinSock As MSWinsockLib.Winsock

Sub Main()
    ' Early binding does not work
    Set myWinSock = New MSWinsockLib.Winsock

    myWinSock.LocalPort = 5432
    
    myWinSock.Listen
    
    MsgBox ("Listening!")
    
    myWinSock.Close
End Sub
assim, tem de fornecer uma instância do controlo Winsock num formulário, de modo que Visual Basic pode compilar as informações de licença para a aplicação. Pode tornar o formulário oculto se necessário. Para isso, defina a propriedade visível como "False". Pode, em seguida, preparar para implementação. Fragmento de código seguinte demonstra o método:
Dim myWinsock As MSWinsockLib.Winsock

Sub Main()
    ' Form1 is hidden
    Set myWinsock = Form1.myWinsock

    myWinsock.LocalPort = 5432
    
    myWinsock.Listen
    
    MsgBox ("Listening!")
    
    myWinsock.Close
End Sub
				
como alternativa, pode colocar um objecto de Controlo Winsock o estruturador visual de um objecto UserControl como um controlo constituintes, que é normalmente efectuado para expandir a funcionalidade de Controlo Winsock ou subclasse. No entanto, esta abordagem não aborda os requisitos de licenciamento. Para uma aplicação utilizar o objecto de mensagens publicitárias para executar com êxito em tempo de execução, o objecto de dispositivo de moldagem, em última análise, deve ser num formulário.

Escalabilidade

O controlo de Winsock foi concebido para utilização em aplicações de servidor cliente ou carregamento de luz. Microsoft não suporta a utilização do controlo em ambientes de servidor com vários threads, especialmente em IIS e COM +, onde a escalabilidade pode ser importante. Utilizar este controlo tal num ambiente pode causar problemas unpredicatible incluindo bloqueios. A Microsoft recomenda que considere a utilização de tecnologias alternativas, tais como a API do Winsock e a porta de conclusão de E/S (IOCP) nestes casos.

Referências

Para obter informações adicionais, clique nos números de artigo existentes abaixo para visualizar os artigos na Microsoft Knowledge Base:
274754  (http://support.microsoft.com/kb/274754/EN-US/ ) INFO: Licenciamento problemas relacionados com controlos de utilizador criados com o Visual Basic
241126  (http://support.microsoft.com/kb/241126/EN-US/ ) INFO: Adicionar dinamicamente UserControls que requerem licenças de tempo de execução
192800  (http://support.microsoft.com/kb/192800/EN-US/ ) INFO: Estrutura problemas ao utilizar IOCP num servidor de Winsock

A informação contida neste artigo aplica-se a:
  • 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
Palavras-chave: 
kbmt kbdswnet2003swept kbapi kbctrl kbinfo kbnetwork kbwinsock KB313984 KbMtpt
Tradução automáticaTradução automática
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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 313984  (http://support.microsoft.com/kb/313984/en-us/ )