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 melhores práticas para trabalhar com o pool de threads.
Coisas a Fazer
Usa o pool de threads para fazer trabalho paralelo na tua aplicação.
Usa itens de trabalho para realizar tarefas estendidas sem bloquear a thread da interface.
Crie itens de trabalho de curta duração e independentes. Os itens de trabalho correm de forma assíncrona e podem ser submetidos ao pool em qualquer ordem a partir da fila.
Despachar atualizações para o tópico da interface. Nas aplicações do WinUI 3, use
DispatcherQueue.TryEnqueuea partir deMicrosoft.UI.Dispatching.DispatcherQueue.Utilize ThreadPoolTimer.CreateTimer em vez da função Sleep.
Usa o pool de threads em vez de criares o teu próprio sistema de gestão de threads. O conjunto de threads funciona ao nível do sistema operativo, com funcionalidades avançadas, e foi otimizado para se dimensionar dinamicamente em função dos recursos e da atividade do dispositivo, no processo e em todo o sistema.
Em C++, certifique-se de que os delegados de itens de trabalho utilizam o modelo de threads ágil (os delegados de C++ são ágeis por predefinição).
Use itens de trabalho pré-alocados quando não conseguir tolerar uma falha na alocação de recursos no momento da utilização.
Coisas a não fazer
Não crie temporizadores periódicos com um valor de período de <1 milissegundo (incluindo 0). Isto fará com que o item de trabalho se comporte como um temporizador de disparo único.
Não envie trabalhos periódicos que demoram mais tempo a concluir do que o tempo especificado no parâmetro do período .
Não tente enviar atualizações da interface (para além de toasts e notificações) a partir de um item de trabalho despachado a partir de uma tarefa em segundo plano. Em vez disso, use gestores de progresso e conclusão de tarefas em segundo plano – por exemplo, IBackgroundTaskInstance.Progress.
Quando utilizares processadores de itens de trabalho que usam a palavra-chave async, não partas do princípio de que todo o código no processador já foi executado quando o estado do item de trabalho tiver sido definido como concluído. O item de trabalho do pool de threads pode ser definido para o estado completo antes de todo o código do handler ter sido executado. O código que segue uma palavra-chave await dentro do handler pode ser executado depois de o item de trabalho ter sido definido para o estado completo.
Não tente executar um item pré-alocado mais do que uma vez sem o reinicializar. Crie um item de trabalho periódico
Tópicos relacionados
Windows developer