Artigo: 136218 - Última revisão: terça-feira, 21 de Novembro de 2006 - Revisão: 2.2

Erro: DdeConnect nunca devolve

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.
Expandir tudo | Reduzir tudo

Sintomas

Uma aplicação de 32 bits contacta DdeConnect quando todos os inicialização DDEML anterior foi executada. Nunca devolve DdeConnect.

Causa

Qualquer thread que cria uma janela de nível superior e não tiver um ciclo de mensagem causará DdeConnect bloquear. Isto acontece porque DdeConnect chama SendMessage(HWND_BROADCAST...). Esta chamada, EnviarMensagem irá colocar a mensagem na fila de mensagens do thread de destino e bloquear o thread de chamada. Se o thread de destino não tiver um ciclo de mensagem, irá nunca processam esta mensagem e por isso nunca devolver.

Um complication é que algumas coisas criam janelas sem o conhecimento do thread chamado. É conhecido que algumas chamadas de função de SQL, RPC e DDEML irão fazer. Fará com que qualquer janela de nível superior que é criada por um thread que tem não ciclo de mensagem que isto aconteça.

Resolução

A solução actual apenas consiste em Adicionar um ciclo de mensagem ao thread que criou a janela.

Ponto Da Situação

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados no início deste artigo.

A informação contida neste artigo aplica-se a:
  • Microsoft Win32 Application Programming Interface nas seguintes plataformas
    • Microsoft Windows NT Server 3.51
    • Microsoft Windows NT Workstation 3.51
    • Microsoft Windows 95
    • Microsoft Win32s 1.3
Palavras-chave: 
kbmt kbbug KB136218 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: 136218  (http://support.microsoft.com/kb/136218/en-us/ )