Compartilhar via


Multithreading: Criação de Threads de Interface do usuário

Um encadeamento de interface do usuário é comumente usadas manipular a entrada do usuário e responder a eventos do usuário independentemente de segmentos executando outras partes do aplicativo.O segmento do aplicativo principal (fornecido em seu CWinApp- classe derivada) já é criado e introdução para você.Este tópico descreve as etapas necessárias para criar segmentos adicionais de interface do usuário.

A primeira coisa que você deve fazer quando criar um encadeamento de interface do usuário é derivado de uma classe de CWinThread.Você deve declarar e implementar essa classe, usando as macros de DECLARE_DYNCREATE e de IMPLEMENT_DYNCREATE .Essa classe deve substituir algumas funções e pode substituir outro.Essas funções e o que devem fazer são apresentadas na tabela a seguir.

Funções para substituir ao criar um encadeamento de interface do usuário

Função

Finalidade

ExitInstance

Executar limpeza quando o segmento termina.Geralmente substituído.

InitInstance

Executar a inicialização de instância de segmento.Deve ser substituído.

OnIdle

Executar o processamento de segmento específico de tempo ocioso.Geralmente não substituído.

PreTranslateMessage

Mensagens de filtro antes que elas sejam despachados a TranslateMessage e a DispatchMessage.Geralmente não substituído.

ProcessWndProcException

Interceptar exceções não tratadas geradas por manipuladores de mensagem e de comando do segmento.Geralmente não substituído.

Executar

Função de verificação para o segmento.Contém a mensagem bomba.Substituído contrário.

O MFC fornece duas versões de AfxBeginThread através sobrecarga de parâmetro: um que só pode criar segmentos de trabalho e um que pode criar segmentos ou segmentos de trabalho da interface do usuário.Para iniciar o encadeamento de interface do usuário, chame a segunda sobrecarga de AfxBeginThread, fornecendo as seguintes informações:

  • RUNTIME_CLASS da classe que é derivada de CWinThread.

  • (Opcional) o nível de prioridade desejado.O padrão é prioridade normal.Para obter mais informações sobre níveis de prioridade disponíveis, consulte SetThreadPriority em Windows SDK.

  • (Opcional) o tamanho desejado de pilha para o segmento.A opção é a pilha do mesmo tamanho que o segmento criador.

  • CREATE_SUSPENDED (opcional) se você deseja que o segmento a ser criado em um estado suspenso.O padrão é 0, ou inicie o segmento normalmente.

  • (Opcional) os atributos de segurança desejados.O padrão é o mesmo acesso que o segmento pai.Para obter mais informações sobre o formato desta informação de segurança, consulte SECURITY_ATTRIBUTES em Windows SDK.

AfxBeginThread faz a maior parte do trabalho para você.Cria um novo objeto da classe, inicializa-o com informações que você fornece, e chame CWinThread::CreateThread para iniciar executar o segmento.Verifica são feitas durante qualquer procedimento para certificar-se que todos os objetos são desalocados corretamente se qualquer parte da falha de design.

Que você deseja saber mais?

Consulte também

Conceitos

Multithreading com C++ e MFC