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 |
---|---|
Execute a limpeza quando termina de thread.Geralmente substituído. |
|
Realiza inicialização de instância de thread.Deve ser substituído. |
|
Executar thread-processamento de time ocioso específico.Não é geralmente substituído. |
|
Filtrar mensagens antes que eles são expedidos para TranslateMessage and DispatchMessage.Não é geralmente substituído. |
|
Intercepte exceções sem tratamento lançadas por manipuladores de mensagens e o comando de thread's.Não é geralmente substituído. |
|
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.