Usando a janela Tarefas

O tarefas janela é semelhante a Threads janela, exceto que mostra informações sobre Task, task_handle, ou WinJS. Promise objetos em vez de cada thread.Como threads, as tarefas representam as operações assíncronas que podem ser executadas simultaneamente; no entanto, várias tarefas podem ser executadas no mesmo thread.Consulte programação assíncrona em JavaScript (aplicativos da Windows Store) para obter mais informações.

No código gerenciado, você pode usar a janela Tarefas quando trabalha com objetos Task ou com as palavras-chave await e async (Await e Async no Visual Basic).Para obter mais informações sobre as tarefas no código gerenciado, consulte Programação paralela no .NET Framework.

No código nativo, você pode usar a janela Tarefas quando trabalha com grupos de tarefas, algoritmos paralelos, agentes assíncronas, e tarefas leves.Para obter mais informações sobre as tarefas no código nativo, consulte Tempo de Execução de Simultaneidade.

No JavaScript, você pode usar a janela Tarefas quando estiver trabalhando com a tarefa e, em seguida, codificar.

Você pode usar a janela Tarefas sempre que quebrar no depurador.Você poderá acessá-la clicando no menu Depurar, Janelas e Tarefas.A ilustração a seguir mostra a janela Tarefas no modo padrão.

Janela tarefas paralelas

ObservaçãoObservação

No código gerenciado, um Task que tem um status de Created, WaitingForActivation ou WaitingToRun podem não ser exibidos na janela das tarefas quando os threads gerenciados estão em um estado de suspensão ou junção.

Informações da coluna de 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 sinalizar ou remover a sinalização de uma tarefa.

Ícones

Uma seta amarela indica a tarefa atual.A tarefa atual é a tarefa mais alta no thread atual.

Uma seta branca indica a tarefa de quebra, isto é, a que era atual quando o depurador foi chamado.

O ícone de pausa indica uma tarefa que foi congelada pelo usuário.Você pode congelar e descongelar uma tarefa clicando com o botão direito na lista.

ID

Um número fornecido pelo sistema para a tarefa.No código nativo, esse é o endereço da tarefa.

Status

O estado atual (agendado, ativo, com deadlock, aguardando ou concluído) da tarefa.Uma tarefa agendada é aquela que ainda não foi executada e, portanto, ainda não tem uma pilha de chamadas, um thread alocado ou as informações relacionadas.

Uma tarefa ativa é aquela que estava executando o código antes de quebrar no depurador.

Uma tarefa de espera é bloqueada porque está esperando um evento ser sinalizado, um bloqueio ser liberado ou outra tarefa ser concluída.

Uma tarefa com deadlock é uma tarefa de espera cujo thread está bloqueado com outro thread.

Passe o mouse sobre a célula Status para uma tarefa com deadlock ou em espera para ver mais informações sobre o bloqueio.

Observação de cuidadoCuidado

Os relatórios da janela Tarefas reporta deadlock apenas uma tarefa bloqueada que usa um primitivo de sincronização com suporte do WCT (Passagem de Cadeia de Espera).Por exemplo, para um objeto Task com deadlock, que usa WCT, o depurador informa Aguardando-com deadlock.Para uma tarefa com deadlock que é gerenciada pelo Tempo de Execução de Simultaneidade, que não usa WCT, o depurador informa Aguardando.Para obter mais informações sobre o WCT, consulte Wait Chain Traversal.

Hora de Início

A hora em que a tarefa se tornou ativa.

Duração

O número de segundos que a tarefa esteve ativa.

Hora de conclusão

A hora em que a tarefa foi concluída.

Local

O local atual da pilha de chamadas da tarefa.Passe o mouse sobre esta célula para ver a pilha de chamada inteira para a tarefa.As tarefas agendadas não têm um valor nessa coluna.

Tarefa

O método inicial e quaisquer argumentos que são passados para a tarefa quando ela foi criada.

Pai

A ID da tarefa que criou essa tarefa.Se estiver em branco, a tarefa não terá pai.Isso é aplicável somente para programas gerenciados.

Atribuição de Thread

O nome e a ID do thread no qual a tarefa está em execução.

Retornar Status

O status da tarefa quando foi concluída.Os valores de retorno de status são Êxito, Cancelado, e Erro.

AppDomain

Para código gerenciado, o domínio de aplicativo no qual a tarefa está em execução.

task_group

Para o código nativo, o endereço do objeto task_group que agendou a tarefa.Para agentes assíncronos e tarefas leves, essa coluna é definida como 0.

Processo

A ID do processo no qual a tarefa está em execução.

Estado assíncrono

Para código gerenciado, o status da tarefa.Por padrão, essa coluna está ocultada.Para exibir esta coluna, abra o menu de contexto para um dos cabeçalhos de coluna.Escolha Colunas, AsyncState.

Você pode adicionar colunas à exibição clicando com o botão direito em um cabeçalho de coluna e selecionando as colunas desejadas.(Remover colunas desmarcando as seleções.) Você também pode reorganizar as colunas arrastando-as para a esquerda ou direita.O menu de atalho da coluna é mostrado na ilustração a seguir.

Menu de exibição de atalho na janela tarefas paralelas

Tarefas de classificação

Para classificar as tarefas por critérios da coluna, clique no cabeçalho da coluna.Por exemplo, clicando no cabeçalho de coluna ID, você poderá classificar as tarefas pela ID de tarefa: 1, 2, 3, 4, 5 e assim por diante.Para inverter a ordem de classificação, clique no cabeçalho da coluna novamente.A coluna e a ordem de classificação atuais estão indicadas por uma seta na coluna.

Agrupando tarefas

Você pode agrupar tarefas com base em qualquer coluna na exibição de lista.Por exemplo, ao clicar com o botão direito no cabeçalho da coluna Status e clicar em Agrupar por Status, você pode agrupar todas as tarefas que têm o mesmo status.Por exemplo, você pode visualizar rapidamente as tarefas em espera para que poder se concentrar em por que estão bloqueadas.Você também pode recolher um grupo que não é de interesse durante a sessão de depuração.Da mesma forma, você pode agrupar por outras colunas.Um grupo pode ser sinalizado ou ter a sinalização removida apenas clicando no botão ao lado do cabeçalho do grupo.A ilustração a seguir mostra a janela Tarefas no modo agrupado.

Modo agrupado na janela tarefas paralelas

Modo de Exibição Pai-Filho

(Essa exibição está disponível apenas para código gerenciado). Ao clicar com o botão direito em um cabeçalho de coluna e em Exibição de pai-filho, você pode alterar a lista de tarefas para uma exibição hierárquica, na qual cada tarefa filho é um subnó que pode ser exibido ou ocultado em seu pai.A ilustração a seguir mostra as tarefas na exibição de pai-filho.

Exibição de pai-filho na janela tarefas paralelas

Tarefas de sinalização

Você pode sinalizar o thread no qual uma tarefa está sendo executada selecionando o item da lista de tarefas e escolhendo Sinalizar no menu de contexto, ou clicando no ícone de sinalizador na primeira coluna.Se você sinalizar várias tarefas, poderá classificar na coluna do sinalizador para levar todas as tarefas sinalizadas para o alto para que você possa se concentrar 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 mantidos entre sessões de depuração.

Congelando e descongelando tarefas

Você pode congelar o thread no qual uma tarefa está sendo executada clicando com botão direito 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ê percorre o código após o ponto de interrupção atual.O comando Congelar Todos os Threads Exceto Esse congelará todos os threads com exceção do que está executando o item da lista de tarefas.

A ilustração a seguir mostra os outros itens de menu para cada tarefa.

Menu de thread de atalho na janela tarefas paralelas

Consulte também

Tarefas

Instruções passo a passo: depurando um aplicativo paralelo

Conceitos

Tempo de Execução de Simultaneidade

Usando a janela Pilhas Paralelas

Outros recursos

Mapa de depurador

Depurando código gerenciado

Programação paralela no .NET Framework