Compartilhar via


Usando a janela de tarefas paralelas

O Tarefas paralelas janela semelhante a segmentos janela, exceto que ele mostra informações sobre cada System.Threading.Tasks.Task ou task_handle objeto em vez de cada segmento. Como os threads, tarefas representam as operações assíncronas que podem ser executados simultaneamente; No entanto, várias tarefas podem ser executado no mesmo thread.

No código gerenciado, você pode usar o Tarefas paralelas janela quando você trabalha com System.Threading.Tasks.Task objetos. Para obter mais informações sobre tarefas em código gerenciado, consulte Programação em paralela a.NET Framework.

No código nativo, você pode usar o Tarefas paralelas janela quando você trabalha com grupos de tarefas, algoritmos paralelos, agentes assíncronos, e tarefas leves. Para obter mais informações sobre tarefas em código nativo, consulte Runtime de simultaneidade.

Você pode usar o Tarefas paralelas janela sempre que você separar o depurador. Você pode acessar o Debug menu clicando Windows e, em seguida, clicando em Tarefas paralelas. A ilustração a seguir mostra a Tarefas paralelas janela 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 pode não estar visível na janela de tarefas em paralelo, se o thread no qual ele foi criado ou agendado está em um estado de suspensão ou associação.

Informações de coluna de tarefas paralelas

As colunas da Tarefas paralelas janela Mostrar as informações a seguir.

Column Name

Description

Sinalizadores

Mostra quais tarefas são sinalizadas e permite sinalizar ou remover o sinalizador de uma tarefa.

Icons

Uma seta amarela indica que a tarefa atual. A tarefa atual for o mais alto no thread atual.

Uma seta branca indica que a tarefa de quebra, ou seja, aquele que era o atual quando o depurador foi invocado.

O ícone de pausa indica uma tarefa que congelou pelo usuário. Você pode congelar e Descongelar uma tarefa clicando na lista.

ID

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

Status

O estado atual (agendado, executando, travado ou aguardando) da tarefa. Uma tarefa agendada é aquele que ainda não foi executada e, portanto, ainda não tem uma pilha de chamadas, o thread atribuído ou informações relacionadas.

Uma tarefa em execução é aquele que estava executando código antes de dividir no depurador.

Uma tarefa de espera é aquele que está bloqueada porque está aguardando um evento deve ser sinalizado, um bloqueio ser liberado ou outra tarefa seja concluída.

Um deadlock é uma tarefa de espera, cujo thread está travado com outro thread.

Focalize o Status a célula de uma tarefa de deadlock ou aguardando obter mais informações sobre o bloco.

ObservaçãoObservação
O Tarefas paralelas janela relatórios deadlock somente para uma tarefa bloqueada que usa um primitivo de sincronização é suportado pela WCT Wait Chain Traversal ().Por exemplo, para um deadlock Task o objeto, que usa a WCT, o depurador relatórios travado em espera.Para uma tarefa de deadlock é gerenciada pelo Runtime de simultaneidade, que não usam a WCT, informa o depurador Aguardando.Para obter mais informações sobre a WCT, consulte Wait Chain Traversal.

Location

O local atual na pilha de chamadas da tarefa. Focalize a essa célula para ver a pilha de chamadas inteira para a tarefa. Tarefas agendadas não tem um valor nessa coluna.

Task

O método inicial e quaisquer argumentos que foram passados para a tarefa, quando ele foi criado.

Parent

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

Atribuição de thread.

A ID e o nome do thread no qual a execução da tarefa.

AppDomain

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

task_group

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

Você pode adicionar colunas ao modo de exibição clicando um título de coluna e selecionando as colunas que você deseja. (Remover colunas desmarcando as seleções). Você também pode reordenar as colunas arrastando-os para esquerda ou direita. No menu de atalho da coluna é mostrado na ilustração a seguir.

Menu de contexto Tarefas Paralelas

Tarefas de classificação

Para classificar tarefas por critérios de coluna, clique no cabeçalho de coluna. Por exemplo, clicando no ID cabeçalho de coluna, você pode classificar as tarefas por identificação da 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 ordem de classificação e a coluna de classificação atual é indicada por uma seta na coluna.

Agrupamento de tarefas

Você pode agrupar tarefas com base em qualquer coluna na exibição de lista. Por exemplo, clicando com o Status cabeçalho de coluna e clicando em grupo por Status, você pode agrupar todas as tarefas que têm o mesmo status. Por exemplo, você pode ver rapidamente as tarefas de espera para que você pode focalizar por que elas são bloqueadas. Você também pode recolher um grupo que não seja de interesse durante a sessão de depuração. Da mesma maneira, você pode agrupar por outras colunas. Um grupo pode ser (DES) sinalizado apenas clicando no botão ao lado do cabeçalho de grupo. A ilustração a seguir mostra a Tarefas paralelas janela no modo agrupado.

Modo agrupado de tarefas paralelas

Exibição-filho pai

(Este modo de exibição é disponível somente para código gerenciado.) Direito do mouse em um cabeçalho de coluna e, em seguida, clicando em Exibição pai-filho, você pode alterar a lista de tarefas para uma exibição hierárquica, no qual todos os filhos a tarefa é um subnó que pode ser exibido ou oculto sob seu pai. A ilustração a seguir mostra as tarefas no modo de exibição de pai-filho.

Exibição pai-filho de tarefas paralelas

A sinalização de tarefas

Você pode sinalizar uma tarefa clicando com o botão direito no item de lista de tarefa e, em seguida, clicando em sinalizador, ou clicando no ícone do sinalizador na primeira coluna. Se o sinalizador de várias tarefas, você pode, em seguida, classificar a coluna do sinalizador de colocar todas as tarefas sinalizadas no início, para que você possa se concentrar apenas neles. Você também pode usar o Paralela pilhas janela para exibir apenas tarefas de sinalizado. Este permite filtrar tarefas que não está interessado para depuração. Sinalizadores não são persistentes entre sessões de depuração.

Congelamento e descongelamento de tarefas

Você pode congelar o thread no qual uma tarefa está sendo executado, clicando com o botão direito no item de lista de tarefa e, em seguida, clicando em Congelar o Thread atribuído. (Se uma tarefa já está congelada, o comando é Descongelar atribuído Thread.) Quando você congela um thread, esse segmento não será executado quando você depurar o código após o ponto de interrupção atual. O Congelar todos os Threads, mas este comando congela todos os threads, exceto aquele 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 contexto Tarefas Paralelas

Consulte também

Tarefas

Usando a janela de pilhas paralela

Demonstra Passo a passo: Depurando um aplicativo paralelo

Conceitos

Programação em paralela a.NET Framework

Runtime de simultaneidade

Outros recursos

Guia para o depurador

Depurando código gerenciado

Histórico de alterações

Date

History

Motivo

Março de 2011

Informações sobre como o depurador relata deadlocks adicionadas.

Aprimoramento de informações.