Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Este tópico descreve as práticas recomendadas para trabalhar com o conjunto de threads.
Coisas a Fazer
Use o pool de threads para fazer trabalho paralelo em seu aplicativo.
Use itens de trabalho para realizar tarefas estendidas sem bloquear o thread da interface do usuário.
Crie itens de trabalho de curta duração e independentes. Os itens de trabalho são executados de forma assíncrona e podem ser enviados ao pool a partir da fila em qualquer ordem.
Envie atualizações para o thread da interface do usuário com o Windows.UI.Core.CoreDispatcher.
Use ThreadPoolTimer.CreateTimer em vez da função Sleep .
Use o pool de threads em vez de criar seu próprio sistema de gerenciamento de threads. O pool de threads é executado no nível do sistema operacional com capacidade avançada e é otimizado para ser dimensionado dinamicamente de acordo com os recursos do dispositivo e a atividade dentro do processo e em todo o sistema.
Em C++, certifique-se de que os delegados de item de trabalho usem o modelo de threading ágil (os delegados C++ são ágeis por padrão).
Use itens de trabalho pré-alocados quando não puder tolerar uma falha de alocação de recursos no momento do uso.
Coisas a evitar
Não crie temporizadores periódicos com um período valor de <de 1 milissegundo (incluindo 0). Isso fará com que o item de trabalho se comporte como um temporizador de disparo único.
Não envie itens de trabalho periódicos que levem mais tempo para serem concluídos do que o montante de tempo que especificou no parâmetro período.
Não tente enviar atualizações da interface do utilizador (exceto toasts e notificações) a partir de um item de trabalho despachado de uma tarefa em segundo plano. Em vez disso, use manipuladores de progresso e conclusão de tarefas em segundo plano - por exemplo, IBackgroundTaskInstance.Progress.
Quando você usa manipuladores de item de trabalho que usam a palavra-chave assíncrona, não assuma que todo o código no manipulador foi executado quando o estado completo foi definido no item de trabalho. O item de trabalho do pool de threads pode ser definido como o estado completo antes que todo o código no manipulador tenha sido executado. O código após um aguardar palavra-chave dentro do manipulador pode ser executado após o item de trabalho ter sido definido para o estado completo.
Não tente executar um item de trabalho pré-alocado mais de uma vez sem reinicializá-lo. Criar um item de trabalho periódico