Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A janela Tarefas se assemelha à janela Threads , exceto que ela mostra informações sobre tarefas assíncronas criadas usando o padrão assíncrono/await, também chamada de TAP (padrão assíncrono baseado em tarefa) em vez de informações baseadas em thread. Assim como os threads, as tarefas representam operações assíncronas que podem ser executadas simultaneamente; no entanto, várias tarefas podem ser executadas no mesmo thread.
No código .NET, você pode usar a janela Tarefas quando trabalha com aplicativos usando o padrão assíncrono/await (Await e Async no VisualBasic). No entanto, a exibição Tarefas na janela Pilhas Paralelas geralmente é mais útil para depurar aplicativos assíncronos. Para obter mais informações, consulte Depurar um aplicativo assíncrono.
No código .NET, você pode usar a janela Tarefas quando trabalha com aplicativos usando o padrão assíncrono/await (Await e Async no VisualBasic). No entanto, a exibição Tarefas na janela Pilhas Paralelas geralmente é mais útil para depurar aplicativos assíncronos. Para obter mais informações, confira Exibir threads e tarefas na janela Pilhas Paralelas.
Dica
Para código C/C++, use a exibição Threads na janela Pilhas Paralelas quando precisar depurar grupos de tarefas, algoritmos paralelos, agentes assíncronos e tarefas leves. Para obter mais informações, confira Exibir threads e tarefas na janela Pilhas Paralelas.
Você pode usar a janela Tarefas sempre que entrar no modo de depuração. Você pode acessá-lo no menu Depurar clicando no Windows e clicando em Tarefas. A ilustração a seguir mostra a janela Tarefas em seu modo padrão.
Observação
No código gerenciado, um Task que tem um status de TaskStatus.Created, TaskStatus.WaitingForActivation ou TaskStatus.WaitingToRun pode não ser exibido na janela Tarefas quando os threads gerenciados estão em um estado de suspensão ou junção.
Informações da coluna Tarefas
As colunas na janela Tarefas mostram as informações a seguir.
| Nome da Coluna | Descrição |
|---|---|
| Sinalizadores | Mostra quais tarefas estão sinalizadas e permite que você sinalize ou desmarque uma tarefa. |
| Ícones |
|
| ID | Um número fornecido pelo sistema para a tarefa. No código nativo, esse é o endereço da tarefa. |
| Estado | O estado atual (agendado, ativo, bloqueado, deadlock, aguardando ou concluído) da tarefa. Passe o mouse sobre a célula Status para ver mais informações sobre o bloco. Aviso: A janela Tarefas relata deadlock apenas para uma tarefa bloqueada que usa um primitivo de sincronização com suporte do WCT (Wait Chain Traversal). Por exemplo, para um objeto bloqueado Task, que usa o WCT, o depurador relata Aguardando-bloqueio. Para uma tarefa em deadlock que é gerenciada pelo Runtime de Execução Concorrente e que não utiliza o WCT, o depurador informa Aguardando. Para obter mais informações sobre o WCT, consulte Wait Chain Traversal. |
| Horário de Início | O momento em que a tarefa se tornou ativa. |
| Duração | O número de segundos em que a tarefa está ativa. |
| Tempo de Conclusão | A hora em que a tarefa foi concluída. |
| Localidade | A localização atual na pilha de chamadas da tarefa. Passe o mouse sobre esta célula para ver toda a pilha de chamadas da tarefa. As tarefas agendadas não têm um valor nesta coluna. |
| Tarefa | O método inicial e todos os argumentos que foram passados para a tarefa quando ela foi criada. |
| AsyncState | Para o código gerenciado, o status da tarefa. Por padrão, essa coluna está oculta. Para exibir essa coluna, abra o menu de contexto de um dos cabeçalhos de coluna. Escolha Colunas, AsyncState. |
| pai | A ID da tarefa que criou essa tarefa. Se isso estiver em branco, a tarefa não terá nenhum pai. Isso só é aplicável para programas gerenciados. |
| Atribuição de thread | A ID e o nome do thread no qual a tarefa está em execução. |
| AppDomain | Para código gerenciado, o domínio do aplicativo no qual a tarefa está sendo executada. |
| task_group | Para código nativo, o endereço do objeto task_group que agendou a tarefa. Para agentes assíncronos e tarefas leves, esta coluna é definida como 0. |
| Processo | A ID do processo em que a tarefa está sendo executada. |
Você pode adicionar colunas ao modo de exibição clicando com o botão direito do mouse em um título de coluna e selecionando as colunas desejadas. (Remova colunas desmarcando as seleções.) Você também pode reordenar colunas arrastando-as para a esquerda ou para a direita. O menu de atalho de coluna é mostrado na ilustração a seguir.
Tarefas de classificação
Para classificar tarefas por critérios de coluna, clique no cabeçalho da coluna. Por exemplo, clicando no cabeçalho da coluna ID , você pode classificar as tarefas por ID da tarefa: 1,2,3,4,5 e assim por diante. Para reverter a ordem de classificação, clique no cabeçalho da coluna novamente. A coluna de classificação atual e a ordem de classificação são indicadas por uma seta na coluna.
Agrupando tarefas
Você pode agrupar tarefas com base em qualquer coluna no modo de exibição de lista. Por exemplo, clicando com o botão direito do mouse no cabeçalho da coluna Status e clicando em Agrupar por>[status], você pode agrupar todas as tarefas que têm o mesmo status. Por exemplo, você pode ver rapidamente as tarefas pendentes para que você possa se concentrar no motivo pelo qual elas estão bloqueadas. Você também pode recolher um grupo que não interesse durante a sessão de depuração. Da mesma maneira, você pode agrupar por outras colunas. Um grupo pode ser marcado ou desmarcado apenas clicando no botão ao lado do cabeçalho do grupo. A ilustração a seguir mostra a janela Tarefas no modo agrupado.
Exibição pai-filho
(Essa exibição está disponível somente para código gerenciado.) Clicando com o botão direito do mouse no cabeçalho da coluna Status e clicando em Agrupar por>Pai, você pode alterar a lista de tarefas para uma exibição hierárquica, na qual cada tarefa filha é um subnó que pode ser exibido ou oculto sob o seu pai.
Tarefas de sinalização
Você pode sinalizar o thread da tarefa na qual uma tarefa está em execução selecionando o item de lista de tarefas e, em seguida, escolhendo Sinalizar Thread Atribuído no menu de contexto ou clicando no ícone de sinalizador na primeira coluna. Se você sinalizar várias tarefas, poderá classificar pela coluna de sinalização para levar todas as tarefas sinalizadas ao topo, permitindo que você se concentre apenas nelas. Você também pode usar a janela Pilhas Paralelas para exibir apenas tarefas sinalizadas. Isso permite filtrar tarefas nas quais você não está interessado para depuração. Os sinalizadores não são persistidos entre as sessões de depuração.
Tarefas de congelamento e descongelamento
Você pode congelar o thread no qual uma tarefa está em execução clicando com o botão direito do mouse no item da lista de tarefas e clicando em Congelar Thread Atribuído. (Se uma tarefa já estiver congelada, o comando será Descongelar Thread Atribuído.) Quando você congela um thread, esse thread não será executado quando você percorrer o código após o ponto de interrupção atual. O comando Congelar Todos os threads, exceto este, congela todos os threads, exceto aquele que executa o item da lista de tarefas.
A ilustração a seguir mostra os outros itens de menu para cada tarefa.
Alternar a tarefa ou janela ativa
O comando Alternar para Tarefa torna a tarefa atual a tarefa ativa. O comando Alternar para Quadro torna o quadro de pilha selecionado o quadro de pilha ativo. O contexto do depurador muda para a tarefa atual ou o frame de pilha selecionado.