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 |
---|---|
Executar limpeza quando o segmento termina.Geralmente substituído. |
|
Executar a inicialização de instância de segmento.Deve ser substituído. |
|
Executar o processamento de segmento específico de tempo ocioso.Geralmente não substituído. |
|
Mensagens de filtro antes que elas sejam despachados a TranslateMessage e a DispatchMessage.Geralmente não substituído. |
|
Interceptar exceções não tratadas geradas por manipuladores de mensagem e de comando do segmento.Geralmente não substituído. |
|
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.