Usar la ventana TareasUsing the Tasks Window

El tareas ventana similar a la subprocesos ventana, solo que muestra información acerca de System.Threading.Tasks.Task, task_handle, o WinJS.Promise en lugar de cada subproceso.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. Como los subprocesos, las tareas representan operaciones asincrónicas que se pueden ejecutar simultáneamente; sin embargo, varias tareas se pueden ejecutar en el mismo subproceso.Like threads, tasks represent asynchronous operations that can run concurrently; however, multiple tasks may run on the same thread.

En código administrado, puede usar el tareas ventana cuando se trabaja con System.Threading.Tasks.Task objetos o con el await y async palabras clave (Await y 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). Para obtener más información acerca de las tareas en código administrado, consulte Parallel Programming.For more information about tasks in managed code, see Parallel Programming.

En código nativo, puede usar el tareas ventana cuando se trabaja con grupos de tareas, algoritmos paralelos, agentes asincrónicos, y tareas ligeras.In native code, you can use the Tasks window when you work with task groups, parallel algorithms, asynchronous agents, and lightweight tasks. Para obtener más información acerca de las tareas en código nativo, vea Runtime de simultaneidad.For more information about tasks in native code, see Concurrency Runtime.

En JavaScript, puede usar la ventana tareas cuando se trabaja con la promesa .then código.In JavaScript, you can use the Tasks window when you are working with promise .then code. Consulte programación asincrónica en JavaScript (aplicaciones UWP) para obtener más información.See Asynchronous programming in JavaScript (UWP apps) for more information.

Puede usar el tareas ventana cada vez que interrumpa el depurador.You can use the Tasks window whenever you break into the debugger. Puede acceder a él en el depurar menú haciendo Windows y, a continuación, haga clic en tareas.You can access it on the Debug menu by clicking Windows and then clicking Tasks. La siguiente ilustración muestra el tareas ventana en su modo predeterminado.The following illustration shows the Tasks window in its default mode.

Ventana tareasTasks window

Note

En código administrado, un Task que tiene un estado de TaskStatus.Created, TaskStatus.WaitingForActivation, o TaskStatus.WaitingToRun podría no ser muestra en el tareas ventana cuando los subprocesos administrados se encuentran en un estado de suspensión o combinación.In managed code, a Task that has a status of TaskStatus.Created, TaskStatus.WaitingForActivation, or TaskStatus.WaitingToRun might not be displayed in the Tasks window when managed threads are in a sleep or join state.

Información de la columna TareasTasks Column Information

Las columnas de la tareas ventana muestran la siguiente información.The columns in the Tasks window show the following information.

Nombre de columnaColumn Name DescripciónDescription
marcasFlags Muestra las tareas que están marcadas y permiten marcar o desmarcar una tarea.Shows which tasks are flagged and lets you flag or unflag a task.
IconosIcons Una flecha amarilla indica la tarea actual.A yellow arrow indicates the current task. La tarea actual es la tarea de nivel superior del subproceso actual.The current task is the top-most task on the current thread.

Una flecha blanca indica la tarea de ruptura, es decir, la tarea en curso cuando se invocó el depurador.A white arrow indicates the breaking task, that is, the one that was current when the debugger was invoked.

El icono de pausa indica una tarea inmovilizada por el usuario.The pause icon indicates a task that has been frozen by the user. Puede inmovilizar y liberar una tarea haciendo clic con el botón secundario en ella en la lista.You can freeze and unfreeze a task by right-clicking it in the list.
IDID Un número proporcionado por sistema para la tarea.A system-provided number for the task. En código nativo, ésta es la dirección de la tarea.In native code, this is the address of the task.
EstadoStatus El estado actual (programado, activo, bloqueado, interbloqueado, en espera de o completado) de la tarea.The current state (scheduled, active, blocked, deadlocked, awaiting, or completed) of the task. Una tarea programada es la que aún no se ha ejecutado y, por consiguiente, no tiene pila de llamadas, subproceso asignado ni información relacionada.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.

Una tarea activa es la que estaba ejecutando código antes de la interrupción del depurador.A active task is one that was executing code before breaking in the debugger.

Una tarea en espera o bloqueada es aquella que se bloquea porque está esperando que se señalice un evento, que se libere un bloqueo o termine otra tarea.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.

Una tarea interbloqueada es una tarea en espera cuyo subproceso está en interbloqueo con otro subproceso.A deadlocked task is a waiting task whose thread is deadlocked with another thread.

Mantenga el mouse sobre el estado celda para una tarea interbloqueada o en espera obtener más información acerca del bloque.Hover over the Status cell for a deadlocked or awaiting task to see more information about the block. Advertencia: el tareas ventana notifica un interbloqueo solo para una tarea bloqueada que utilice una primitiva de sincronización que se admite por encadenado con esperas (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). Por ejemplo, para un interbloqueo Task objeto, que utiliza WCT, el depurador notifica espera con interbloqueo.For example, for a deadlocked Task object, which uses WCT, the debugger reports Awaiting-deadlocked. Para una tarea interbloqueada administrada por el Runtime de simultaneidad, que no utiliza WCT, el depurador notifica espera.For a deadlocked task that is managed by the Concurrency Runtime, which does not use WCT, the debugger reports Waiting. Para obtener más información sobre WCT, vea Wait Chain Traversal.For more information about WCT, see Wait Chain Traversal.
Hora de inicioStart Time La hora en la que se activó la tarea.The time at which the task became active.
DuraciónDuration El número de segundos que la tarea ha estado activa.The number of seconds that the task has been active.
Hora de finalizaciónCompletion Time La hora en la que se completó la tarea.The time at which the task completed.
UbicaciónLocation La ubicación actual en la pila de llamadas de la tarea.The current location in the call stack of the task. Desplace el puntero del mouse sobre esta celda para ver la pila de llamadas completa de la tarea.Hover over this cell to see the entire call stack for the task. Las tareas programadas no tienen un valor en esta columna.Scheduled tasks do not have a value in this column.
TaskTask El método inicial y los argumentos que se pasaron a la tarea cuando se creó.The initial method and any arguments that were passed to the task when it was created.
AsyncStateAsyncState En el código administrado, el estado de la tarea.For managed code, the task status. De forma predeterminada, se oculta esta columna.By default, this column is hidden. Para mostrar esta columna, abra el menú contextual de uno de los encabezados de columna.To display this column, open the context menu for one of the column headers. Elija columnas, AsyncState.Choose Columns, AsyncState.
Elemento primarioParent El identificador del subproceso que creó esta ventana.The ID of the task that created this task. Si está en blanco, la tarea tiene ningún primario.If this is blank, the task has no parent. Esto solo es aplicable a los programas administrados.This is only applicable for managed programs.
Asignación de subprocesoThread Assignment El identificador y nombre del subproceso en el que la tarea se está ejecutando.The ID and name of the thread on which the task is running.
Dominio de aplicaciónAppDomain En código administrado, el dominio de aplicación en el que la tarea se está ejecutando.For managed code, the application domain in which the task is executing.
task_grouptask_group Para código nativo, la dirección de la task_group objeto que la tarea programada.For native code, the address of the task_group object that scheduled the task. En los agentes asincrónicos y las tareas ligeras, esta columna se establece en 0.For asynchronous agents and lightweight tasks, this column is set to 0.
ProcessProcess El identificador del proceso en el que se está ejecutando la tarea.The ID of the process that the task is running on.

Puede agregar columnas a la vista haciendo clic con el botón secundario en un encabezado de columna y seleccionando las columnas que desea.You can add columns to the view by right-clicking a column heading and then selecting the columns you want. (Quite columnas borrando las selecciones). También puede reordenar las columnas arrastrándolas a izquierda o derecha.(Remove columns by clearing the selections.) You can also reorder columns by dragging them left or right. El menú contextual de la columna se muestra en la siguiente ilustración.The column shortcut menu is shown in the following illustration.

Menú de vista contextual en la ventana tareasShortcut view menu in Tasks window

Ordenar TareasSorting Tasks

Para ordenar las tareas por columnas, haga clic en el encabezado de columna.To sort tasks by column criteria, click the column header. Por ejemplo, al hacer clic en el ID encabezado de columna, puede ordenar las tareas por Id. de tarea: 1,2,3,4,5 y así sucesivamente.For example, by clicking the ID column header, you can sort the tasks by task ID: 1,2,3,4,5 and so on. Para invertir el criterio de ordenación, haga clic en el encabezado de columna de nuevo.To reverse the sort order, click the column header again. Una flecha en la columna indica el criterio y la columna de ordenación.The current sort column and sort order is indicated by an arrow on the column.

Agrupar tareasGrouping Tasks

Puede agrupar tareas por cualquier columna en la vista de lista.You can group tasks based on any column in the list view. Por ejemplo, haciendo clic con el estado encabezado de columna y, a continuación, haga clic en Agrupar por > [estado], también puede agrupar todas las tareas que tienen el mismo estado.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. Por ejemplo, podría ver rápidamente en espera de tareas por lo que podría centrarse en ¿por qué se bloquean.For example, you could quickly see awaiting tasks so that you could focus on why they are blocked. También puede contraer un grupo que no es de interés durante la sesión de depuración.You can also collapse a group that is not of interest during the debug session. De la misma manera, puede agrupar por otras columnas.In the same manner, you can group by the other columns. Se puede marcar o quitar la marca de un grupo haciendo clic en el botón del encabezado de grupo.A group can be (un)flagged just by clicking the button next to the group header. La siguiente ilustración muestra el tareas ventana en modo agrupado.The following illustration shows the Tasks window in grouped mode.

Modo agrupado en la ventana tareasGrouped mode in Tasks window

Vista de elemento primario y secundarioParent Child View

(Esta vista solo está disponible en código administrado). Haciendo clic con el estado encabezado de columna y, a continuación, haga clic en Agrupar por > primario, puede cambiar la lista de tareas para una vista jerárquica, en el que cada tarea secundaria es un subnodo que se puede mostrar u ocultar bajo su elemento primario.(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.

Marcar tareasFlagging Tasks

Puede marcar el subproceso de la lista de la tarea en el que se ejecuta una tarea seleccionando la tarea de elemento y, a continuación, elija Marcar subproceso asignado en el menú contextual, o haciendo clic en el icono de marca en la primera columna.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 marca varias tareas, después puede ordenarlas en la columna para llevar todas las tareas marcadas a la parte superior de forma que se pueda concentrar en ellas.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. También puede usar el pilas paralelas ventana para ver las tareas marcadas solamente.You can also use the Parallel Stacks window to view only flagged tasks. Esto le permite filtrar las tareas que no le interesa depurar.This lets you filter out tasks that you are not interested in for debugging. Las marcas no se conservan entre sesiones de depuración.Flags are not persisted between debugging sessions.

Inmovilizar y reanudar tareasFreezing and Thawing Tasks

Puede inmovilizar el subproceso donde se ejecuta una tarea haciendo clic en el elemento de lista de tareas y, a continuación, haga clic en Inmovilizar subproceso asignado.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 una tarea ya está inmovilizada, el comando es Reanudar subproceso asignado.) Al inmovilizar un subproceso, no se ejecutará cuando se recorra el código después del punto de interrupción actual.(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. El inmovilizar todos los subprocesos, pero este uno comando inmoviliza todos los subprocesos excepto al que se está ejecutando el elemento de lista de tareas.The Freeze All Threads But This One command freezes all threads except the one that is executing the task list item.

En la siguiente ilustración se muestran el resto de elementos de menú para cada tarea.The following illustration shows the other menu items for each task.

Menú de subproceso contextual en la ventana tareasShortcut thread menu in Tasks window

Cambio de la tarea activa o el marcoSwitching the Active Task or Frame

El cambiar a tarea comando hace que la tarea actual de la tarea activa.The Switch to Task command makes the current task the active task. El cambiar a marco comando hace que la pila seleccionada el marco de pila activo de fotogramas.The Switch to Frame command makes the selected stack frame the active stack frame. El contexto del depurador cambia a la tarea actual o el marco de pila seleccionado.The debugger context switches to the current task or the selected stack frame.

Vea tambiénSee also