Multithreading: Criando segmentos de interface do usuário

Uma interface de usuário thread costuma ser usado para manipular a entrada do usuário e responder a eventos de usuário independentemente do thread s outras partes do aplicativo em execução.O thread principal do aplicativo (fornecido no seu CWinApp-classe derivada) já é criada e iniciada para você. Este tópico descreve as etapas necessárias para criar segmentos adicionais da interface do usuário.

A primeira coisa que você deve fazer ao criar um thread de interface do usuário é derivar uma classe de CWinThread.Você deve declarar e implementam esta classe, usando o DECLARE_DYNCREATE and IMPLEMENT_DYNCREATE macros.Essa classe deve substituir algumas funções e pode substituir outras pessoas.Essas funções e o que devem fazer são apresentados na tabela a seguir.

Funções como substituir ao criar um thread de interface do usuário

Função

Objetivo

ExitInstance

Execute a limpeza quando termina de thread.Geralmente substituído.

CWinAppEx

Realiza inicialização de instância de thread.Deve ser substituído.

OnIdle

Executar thread-processamento de time ocioso específico.Não é geralmente substituído.

PreTranslateMessage

Filtrar mensagens antes que eles são expedidos para TranslateMessage and DispatchMessage.Não é geralmente substituído.

ProcessWndProcException

Intercepte exceções sem tratamento lançadas por manipuladores de mensagens e o comando de thread's.Não é geralmente substituído.

Executar

Função de controle para o segmento.Contém a bomba de mensagem.Raramente substituído.

MFC fornece duas versões de AfxBeginThread por meio de sobrecarga de parâmetro: uma para threads de interface do usuário e Outros para threads de trabalho.Para iniciar o thread de interface do usuário, chamar AfxBeginThread, fornecendo as seguintes informações:

  • The RUNTIME_CLASS da classe derivada de CWinThread.

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

  • (Opcional) O dimensionar da pilha desejada para o thread.O padrão é a mesma pilha dimensionar sistema autônomo a criação de thread.

  • (Opcional) CREATE_SUSPENDED se desejar que o thread a ser criado em um estado suspenso.O padrão é 0 ou iniciar o thread normalmente.

  • (Opcional) Os atributos de segurança desejado.O padrão é o mesmo acesso sistema autônomo thread pai.Para obter mais informações sobre o formato dessas informações de segurança, consulte SECURITY_ATTRIBUTES in the Windows SDK.

AfxBeginThread faz a maior parte do trabalho para você. Ele cria um novo objeto de sua classe, inicializa com as informações que você forneça e chama CWinThread::CreateThread para iniciar o thread em execução.As verificações são feitas durante o procedimento para certificar-se de que todos os objetos estão liberados adequadamente caso de falha em qualquer parte da criação.

O que você deseja saber mais sobre?

Consulte também

Conceitos

Multithreading com C++ e do MFC