Utilisation de la fenêtre TâchesUsing the Tasks Window

Le tâches fenêtre ressemble à la Threads fenêtre, à ceci près qu’elle affiche des informations sur System.Threading.Tasks.Task, task_handle, ou WinJS.Promise des objets au lieu de chaque thread.The Tasks window resembles the Threads window, except that it shows information about System.Threading.Tasks.Task, task_handle, or WinJS.Promise objects instead of each thread. Comme les threads, les tâches représentent des opérations asynchrones qui peuvent s’exécuter simultanément. Toutefois, plusieurs tâches peuvent s’exécuter sur le même thread.Like threads, tasks represent asynchronous operations that can run concurrently; however, multiple tasks may run on the same thread.

Dans le code managé, vous pouvez utiliser la tâches fenêtre lorsque vous travaillez avec System.Threading.Tasks.Task objets ou avec le await et async mots clés (Await et Async en Visual Basic).In managed code, you can use the Tasks window when you work with System.Threading.Tasks.Task objects or with the await and async keywords (Await and Async in VisualBasic). Pour plus d’informations sur les tâches en code managé, consultez programmation parallèle.For more information about tasks in managed code, see Parallel Programming.

En code natif, vous pouvez utiliser la tâches fenêtre lorsque vous travaillez avec groupes de tâches, algorithmes parallèles, agents asynchrones, et tâches légères.In native code, you can use the Tasks window when you work with task groups, parallel algorithms, asynchronous agents, and lightweight tasks. Pour plus d’informations sur les tâches en code natif, consultez Runtime d’accès concurrentiel.For more information about tasks in native code, see Concurrency Runtime.

Dans JavaScript, vous pouvez utiliser la fenêtre tâches lorsque vous travaillez avec promesse .then code.In JavaScript, you can use the Tasks window when you are working with promise .then code. Consultez programmation asynchrone dans JavaScript (applications UWP) pour plus d’informations.See Asynchronous programming in JavaScript (UWP apps) for more information.

Vous pouvez utiliser la tâches fenêtre chaque fois que vous arrêtez dans le débogueur.You can use the Tasks window whenever you break into the debugger. Vous pouvez y accéder sur le déboguer en cliquant sur Windows , puis en cliquant sur tâches.You can access it on the Debug menu by clicking Windows and then clicking Tasks. L’illustration suivante montre le tâches fenêtre dans son mode par défaut.The following illustration shows the Tasks window in its default mode.

La fenêtre tâchesTasks window

Note

En code managé, Task qui a un état TaskStatus, TaskStatus ou TaskStatus, ne peut pas s'afficher dans la fenêtre Tâches lorsque les threads managés sont à l'état de veille ou à l'état de jonction.In managed code, a Task that has a status of TaskStatus, TaskStatus, or TaskStatus might not be displayed in the Tasks window when managed threads are in a sleep or join state.

Informations sur les colonnes de la fenêtre TâchesTasks Column Information

Les colonnes dans le tâches fenêtre Afficher les informations suivantes.The columns in the Tasks window show the following information.

Nom de la colonneColumn Name DescriptionDescription
IndicateursFlags Affiche les tâches avec indicateur et vous permet d’ajouter un indicateur à une tâche ou d’en supprimer un.Shows which tasks are flagged and lets you flag or unflag a task.
IcônesIcons La flèche jaune indique la tâche actuelle.A yellow arrow indicates the current task. La tâche actuelle est la tâche supérieure du thread actuel.The current task is the top-most task on the current thread.

Une flèche blanche indique la tâche d'arrêt, autrement dit, celle qui était actuelle lorsque le débogueur a été appelé.A white arrow indicates the breaking task, that is, the one that was current when the debugger was invoked.

L'icône de pause indique une tâche gelée par l'utilisateur.The pause icon indicates a task that has been frozen by the user. Vous pouvez geler et libérer une tâche en cliquant dessus avec le bouton droit dans la liste.You can freeze and unfreeze a task by right-clicking it in the list.
IDID Numéro fourni par le système pour la tâche.A system-provided number for the task. En code natif, il s’agit de l’adresse de la tâche.In native code, this is the address of the task.
ÉtatStatus L’état actuel (planifié, actif, bloqué, bloqué, en attente ou terminé) de la tâche.The current state (scheduled, active, blocked, deadlocked, awaiting, or completed) of the task. Une tâche planifiée est une tâche qui n’a pas encore été exécutée et, par conséquent, qui de possède pas encore une pile d’appels, un thread assigné ou des informations connexes.A scheduled task is one that has not yet been run and, therefore, does not yet have a call stack, assigned thread, or related information.

Une tâche active est une tâche qui était en train d’exécuter du code avant de s’arrêter dans le débogueur.A active task is one that was executing code before breaking in the debugger.

Une tâche en attente ou bloquée est celle qui est bloquée, car elle est en attente d’un événement soit signalé, un verrou soit libéré ou une autre tâche se termine.An awaiting or blocked task is one that is blocked because it is waiting on an event to be signaled, a lock to be released, or another task to finish.

Une tâche bloquée est une tâche en attente dont le thread est bloqué par un autre thread.A deadlocked task is a waiting task whose thread is deadlocked with another thread.

Placez le curseur sur le état cellule d’une tâche bloquée ou en attente pour plus d’informations sur le blocage.Hover over the Status cell for a deadlocked or awaiting task to see more information about the block. Avertissement : le tâches fenêtre signale les interblocages uniquement pour les tâches bloquées utilisant une primitive de synchronisation prise en charge par Wait Chain Traversal (WCT).Warning: The Tasks window reports deadlock only for a blocked task that uses a synchronization primitive that is supported by Wait Chain Traversal (WCT). Par exemple, pour un interblocage Task objet, qui utilise le WCT, le débogueur signale bloquée en attente.For example, for a deadlocked Task object, which uses WCT, the debugger reports Awaiting-deadlocked. Pour une tâche bloquée gérée par le Runtime d’accès concurrentiel, qui n’utilise pas Wait Chain Traversal, le débogueur signale attente.For a deadlocked task that is managed by the Concurrency Runtime, which does not use WCT, the debugger reports Waiting. Pour plus d’informations sur WCT, consultez Wait Chain Traversal.For more information about WCT, see Wait Chain Traversal.
Heure de débutStart Time Heure à laquelle la tâche est devenue active.The time at which the task became active.
DuréeDuration Nombre de secondes durant lesquelles la tâche a été active.The number of seconds that the task has been active.
Heure de finCompletion Time Heure à laquelle la tâche s’est terminée.The time at which the task completed.
EmplacementLocation Emplacement actuel dans la pile d’appels de la tâche.The current location in the call stack of the task. Pointez sur cette cellule pour visualiser l'ensemble de la pile des appels de la tâche.Hover over this cell to see the entire call stack for the task. Les tâches planifiées ne disposent pas de valeur dans cette colonne.Scheduled tasks do not have a value in this column.
TaskTask Méthode initiale et tous les arguments passés à la tâche lorsqu’elle a été créée.The initial method and any arguments that were passed to the task when it was created.
AsyncStateAsyncState En matière de code managé, état de la tâche.For managed code, the task status. Par défaut, cette colonne est masquée.By default, this column is hidden. Pour afficher cette colonne, ouvrez le menu contextuel pour l'une des en-têtes de colonnes.To display this column, open the context menu for one of the column headers. Choisissez colonnes, AsyncState.Choose Columns, AsyncState.
ParentParent ID de la tâche qui a créé cette tâche.The ID of the task that created this task. Si rien n’est indiqué, la tâche n’a aucun parent.If this is blank, the task has no parent. Ceci s'applique uniquement aux programmes gérés.This is only applicable for managed programs.
Affectation de threadThread Assignment ID et nom du thread sur lequel la tâche s’exécute.The ID and name of the thread on which the task is running.
Domaine d’applicationAppDomain Pour du code managé, domaine d’application dans lequel la tâche s’exécute.For managed code, the application domain in which the task is executing.
task_grouptask_group Pour le code natif, l’adresse de la task_group objet qui a planifié la tâche.For native code, the address of the task_group object that scheduled the task. Pour les agents asynchrones et les tâches légères, cette colonne a la valeur 0.For asynchronous agents and lightweight tasks, this column is set to 0.
ProcessProcess ID du processus que la tâche exécute.The ID of the process that the task is running on.

Vous pouvez ajouter des colonnes à la vue en cliquant avec le bouton droit sur un en-tête de colonne et en sélectionnant ensuite les colonnes souhaitées.You can add columns to the view by right-clicking a column heading and then selecting the columns you want. (Supprimez des colonnes en effaçant les sélections.) Vous pouvez également réorganiser les colonnes en les faisant glisser à gauche ou à droite.(Remove columns by clearing the selections.) You can also reorder columns by dragging them left or right. Le menu contextuel des colonnes est présenté dans l'illustration suivante.The column shortcut menu is shown in the following illustration.

Menu Affichage de raccourci dans la fenêtre tâchesShortcut view menu in Tasks window

Tri de tâchesSorting Tasks

Pour trier des tâches en fonction des critères de colonne, cliquez sur l’en-tête d’une colonne.To sort tasks by column criteria, click the column header. Par exemple, en cliquant sur le ID en-tête de colonne, vous pouvez trier les tâches par ID de tâche : 1,2,3,4,5 et ainsi de suite.For example, by clicking the ID column header, you can sort the tasks by task ID: 1,2,3,4,5 and so on. Pour inverser l'ordre de tri, cliquez à nouveau sur l'en-tête de la colonne.To reverse the sort order, click the column header again. La colonne et l'ordre de tri actuels sont indiqués par une flèche dans la colonne.The current sort column and sort order is indicated by an arrow on the column.

Regroupement de tâchesGrouping Tasks

Vous pouvez regrouper des tâches en fonction d’une colonne de la vue Liste.You can group tasks based on any column in the list view. Par exemple, en double-cliquant sur le état en-tête de colonne, puis cliquez sur regrouper par > [état], vous pouvez regrouper toutes les tâches qui ont le même état.For example, by right-clicking the Status column header and then clicking Group by > [status], you can group all tasks that have the same status. Par exemple, vous pouvez visualiser rapidement en attente de tâches permettant de vous concentrer sur la raison pour laquelle ils sont bloqués.For example, you could quickly see awaiting tasks so that you could focus on why they are blocked. Vous pouvez également réduire un groupe qui ne présente pas d‘intérêt pour la session de débogage.You can also collapse a group that is not of interest during the debug session. De la même manière, vous pouvez regrouper les tâches en fonction des autres colonnes.In the same manner, you can group by the other columns. Pour ajouter un indicateur à un groupe (ou en supprimer un), il suffit de cliquer sur le bouton en regard de l'en-tête de groupe.A group can be (un)flagged just by clicking the button next to the group header. L’illustration suivante montre le tâches fenêtre en mode regroupé.The following illustration shows the Tasks window in grouped mode.

Mode groupé dans la fenêtre tâchesGrouped mode in Tasks window

Vue Parent enfantParent Child View

(cette vue est uniquement disponible pour le code managé) En cliquant sur le état en-tête de colonne, puis cliquez sur regrouper par > Parent, vous pouvez modifier la liste des tâches en une vue hiérarchique, dans laquelle chaque tâche enfant est un sous-nœud qui peut être affiché ou masqué sous son parent.(This view is available for managed code only.) By right-clicking the Status column header and then clicking Group by > Parent, you can change the list of tasks to a hierarchical view, in which every child task is a sub-node that can be displayed or hidden under its parent.

Ajout d’indicateurs à des tâchesFlagging Tasks

Vous pouvez marquer le thread sur lequel une tâche s’exécute en sélectionnant la tâche, puis en choisissant indicateur de Thread assigné dans le menu contextuel, ou en cliquant sur l’icône d’indicateur dans la première colonne.You can flag the thread the task on which a task is running by selecting the task list item and then choosing Flag Assigned Thread from the context menu, or by clicking the flag icon in the first column. Si vous signalez plusieurs tâches, vous pouvez ensuite effectuer un tri sur la colonne d’indicateur pour déplacer toutes les tâches avec indicateur vers le haut afin de pouvoir vous concentrer uniquement sur celles-ci.If you flag several tasks, you can then sort on the flag column to bring all the flagged tasks to the top so that you can focus just on them. Vous pouvez également utiliser le piles parallèles pour afficher uniquement les tâches avec indicateur.You can also use the Parallel Stacks window to view only flagged tasks. Cela vous permet d’éliminer par filtrage les tâches qui ne vous intéressent pas pour le débogage.This lets you filter out tasks that you are not interested in for debugging. Les indicateurs ne sont pas persistants entre les sessions de débogage.Flags are not persisted between debugging sessions.

Gel et libération des tâchesFreezing and Thawing Tasks

Vous pouvez geler le thread sur lequel une tâche est en cours d’exécution en cliquant sur l’élément de liste de tâches, puis sur verrouiller le Thread affecté.You can freeze the thread on which a task is running by right-clicking the task list item and then clicking Freeze Assigned Thread. (Si une tâche est déjà gelée, la commande est libérer le Thread affecté.) Lorsque vous gelez un thread, celui-ci ne s'exécute pas lorsque vous parcourez le code après le point d'arrêt actuel.(If a task is already frozen, the command is Thaw Assigned Thread.) When you freeze a thread, that thread will not execute when you step through code after the current breakpoint. Le figer tous les Threads, mais celui-ci commande gèle tous les threads sauf celui qui exécute la tâche.The Freeze All Threads But This One command freezes all threads except the one that is executing the task list item.

L’illustration suivante présente les autres éléments de menu pour chaque tâche.The following illustration shows the other menu items for each task.

Menu contextuel du thread dans la fenêtre tâchesShortcut thread menu in Tasks window

Basculement de la tâche Active ou un FrameSwitching the Active Task or Frame

Le basculer vers la tâche commande rend la tâche en cours de la tâche active.The Switch to Task command makes the current task the active task. Le basculer vers le Frame commande rend la pile sélectionnée frame le frame de pile actif.The Switch to Frame command makes the selected stack frame the active stack frame. Le contexte du débogueur passe à la tâche en cours ou le frame de pile sélectionné.The debugger context switches to the current task or the selected stack frame.

Voir aussiSee Also

Principes de base du débogueur Debugger Basics
Débogage du code managé Debugging Managed Code
Programmation parallèle Parallel Programming
Runtime d’accès concurrentiel Concurrency Runtime
À l’aide de la fenêtre Piles parallèles Using the Parallel Stacks Window
Procédure pas à pas : débogage d’une application parallèleWalkthrough: Debugging a Parallel Application