Uso della finestra attività (C#, Visual Basic, C++)Using the Tasks Window (C#, Visual Basic, C++)

La finestra Attività è simile alla finestra Thread, l'unica differenza è che mostra informazioni sugli oggetti System.Threading.Tasks.Task, task_handle o WinJS.Promise e non su ogni 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. Analogamente ai thread, le attività rappresentano operazioni asincrone eseguibili simultaneamente; tuttavia, più attività possono essere eseguite nello stesso thread.Like threads, tasks represent asynchronous operations that can run concurrently; however, multiple tasks may run on the same thread.

Nel codice gestito è possibile usare la finestra Attività quando si utilizzano gli oggetti System.Threading.Tasks.Task o con le parole chiave await e async (Await e Async in 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). Per altre informazioni sulle attività nel codice gestito, vedere programmazione parallela.For more information about tasks in managed code, see Parallel Programming.

Nel codice nativo, è possibile usare la finestra Attività quando si utilizzano gruppi di attività, algoritmi paralleli, agenti asincroni e attività leggere.In native code, you can use the Tasks window when you work with task groups, parallel algorithms, asynchronous agents, and lightweight tasks. Per altre informazioni sulle attività nel codice nativo, vedere Runtime di concorrenza.For more information about tasks in native code, see Concurrency Runtime.

In JavaScript, è possibile utilizzare la finestra attività quando si lavora con promise .then codice.In JavaScript, you can use the Tasks window when you are working with promise .then code. Visualizzare programmazione asincrona in JavaScript (app UWP) per altre informazioni.See Asynchronous programming in JavaScript (UWP apps) for more information.

La finestra Attività può essere usata ogni volta che ci si interrompe l'esecuzione nel debugger.You can use the Tasks window whenever you break into the debugger. È possibile accedere a esso nel menu Debug scegliendo Finestre e facendo clic su Attività.You can access it on the Debug menu by clicking Windows and then clicking Tasks. Nell'illustrazione seguente viene mostrata la finestra Attività nella modalità predefinita.The following illustration shows the Tasks window in its default mode.

Finestra attivitàTasks window

Note

Nel codice gestito, un Task che ha uno stato TaskStatus.Created, TaskStatus.WaitingForActivation, oppure TaskStatus.WaitingToRun potrebbe non essere visualizzato nei attività finestra quando i thread gestiti si trovano nello stato sospensione o join.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.

Informazioni nelle colonne della finestra AttivitàTasks Column Information

Nelle colonne della finestra Attività vengono visualizzate le informazioni seguenti.The columns in the Tasks window show the following information.

Nome colonnaColumn Name DescrizioneDescription
FlagFlags Mostra quali attività sono contrassegnate e consente di impostare o rimuovere un flag per un'attività.Shows which tasks are flagged and lets you flag or unflag a task.
IconeIcons Una freccia gialla indica l'attività corrente.A yellow arrow indicates the current task. L'attività corrente è l'attività in primo piano nel thread corrente.The current task is the top-most task on the current thread.

Una freccia bianca indica l'attività di interruzione, vale a dire l'attività corrente al momento della chiamata del debugger.A white arrow indicates the breaking task, that is, the one that was current when the debugger was invoked.

L'icona di sospensione indica un'attività bloccata dall'utente.The pause icon indicates a task that has been frozen by the user. È possibile bloccare e sbloccare un'attività facendovi clic sopra con il pulsante destro del mouse nell'elenco.You can freeze and unfreeze a task by right-clicking it in the list.
IDID Numero fornito dal sistema per l'attività.A system-provided number for the task. Nel codice nativo, è l'indirizzo dell'attività.In native code, this is the address of the task.
StatusStatus Stato corrente (pianificato, attivo, bloccato, deadlock, in attesa o completato) dell'attività.The current state (scheduled, active, blocked, deadlocked, awaiting, or completed) of the task. Un'attività pianificata è un'attività che non è stata ancora eseguita, pertanto non dispone ancora di uno stack di chiamate, un thread assegnato o informazioni correlate.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.

Un'attività attiva è un'attività che stava eseguendo codice prima dell'accesso al debugger.A active task is one that was executing code before breaking in the debugger.

Un'attività in attesa o bloccata è quello che viene bloccata perché è in attesa di un evento venga segnalato, un blocco deve essere rilasciato o fine di un'altra attività.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.

Un'attività in deadlock è un'attività in attesa il cui thread è in deadlock con un altro thread.A deadlocked task is a waiting task whose thread is deadlocked with another thread.

Passare il mouse sul stato cella di un'attività in deadlock o in attesa visualizzare altre informazioni sul blocco.Hover over the Status cell for a deadlocked or awaiting task to see more information about the block. Avviso: La finestra Attività segnala un deadlock solo per un'attività bloccata che usa una primitiva di sincronizzazione supportata da WCT (Wait Chain Traversal).Warning: The Tasks window reports deadlock only for a blocked task that uses a synchronization primitive that is supported by Wait Chain Traversal (WCT). Ad esempio, per un deadlock Task oggetto, che utilizza WCT, il debugger viene segnalato -in deadlock Awaiting.For example, for a deadlocked Task object, which uses WCT, the debugger reports Awaiting-deadlocked. Per un'attività in deadlock gestita dal runtime di concorrenza, che non utilizza WCT, viene visualizzato il messaggio In attesa.For a deadlocked task that is managed by the Concurrency Runtime, which does not use WCT, the debugger reports Waiting. Per altre informazioni su WCT, vedere Wait Chain Traversal.For more information about WCT, see Wait Chain Traversal.
Ora di inizioStart Time Ora in cui l'attività è diventata attiva.The time at which the task became active.
DurataDuration Numero di secondi durante i quali l'attività è rimasta attiva.The number of seconds that the task has been active.
Tempo di completamentoCompletion Time Ora in cui l'attività è stata completata.The time at which the task completed.
PosizioneLocation Percorso corrente nello stack di chiamate dell'attività.The current location in the call stack of the task. Passare il mouse su questa cella per visualizzare l'intero stack di chiamate dell'attività.Hover over this cell to see the entire call stack for the task. Le attività pianificate non presentano alcun valore in questa colonna.Scheduled tasks do not have a value in this column.
TaskTask Metodo iniziale ed eventuali argomenti passati all'attività quando è stata creata.The initial method and any arguments that were passed to the task when it was created.
AsyncStateAsyncState Per il codice gestito, lo stato dell'attività.For managed code, the task status. Per impostazione predefinita, questa colonna è nascosta.By default, this column is hidden. Per visualizzarla, aprire il menu di scelta rapida per una delle intestazioni di colonna.To display this column, open the context menu for one of the column headers. Scegliere Colonne, AsyncState.Choose Columns, AsyncState.
PadreParent ID dell'attività che ha creato questa attività.The ID of the task that created this task. Se la cella è vuota significa che l'attività non dispone di un'attività padre.If this is blank, the task has no parent. Questo dato è applicabile ai soli programmi gestiti.This is only applicable for managed programs.
Assegnazione threadThread Assignment ID e nome del thread nel quale viene eseguita l'attività.The ID and name of the thread on which the task is running.
AppDomainAppDomain Dominio applicazione nel quale viene eseguita l'attività, in caso di codice gestito.For managed code, the application domain in which the task is executing.
task_grouptask_group Indirizzo dell'oggetto task_group che ha pianificato l'attività, in caso di codice nativo.For native code, the address of the task_group object that scheduled the task. Per gli agenti asincroni e le attività leggere, questa colonna viene impostata su 0.For asynchronous agents and lightweight tasks, this column is set to 0.
ProcessoProcess ID del processo in cui viene eseguita l'attività.The ID of the process that the task is running on.

Per aggiungere colonne alla visualizzazione, fare clic con il pulsante destro del mouse su un'intestazione di colonna e selezionare le colonne desiderate.You can add columns to the view by right-clicking a column heading and then selecting the columns you want. Per rimuovere le colonne, annullare le selezioni. È possibile inoltre riordinare le colonne trascinandole a sinistra o a destra.(Remove columns by clearing the selections.) You can also reorder columns by dragging them left or right. Nell'illustrazione seguente viene mostrato il menu di scelta rapida delle colonne.The column shortcut menu is shown in the following illustration.

Menu di scelta rapida visualizza nella finestra attivitàShortcut view menu in Tasks window

Ordinamento delle attivitàSorting Tasks

Per ordinare le attività in base ai criteri delle colonne, fare clic sull'intestazione di colonna.To sort tasks by column criteria, click the column header. Ad esempio, facendo i ID intestazione di colonna, è possibile ordinare le attività da un ID attività: 1,2,3,4,5 e così via.For example, by clicking the ID column header, you can sort the tasks by task ID: 1,2,3,4,5 and so on. Per invertire l'ordine, fare nuovamente clic sull'intestazione.To reverse the sort order, click the column header again. La colonna di ordinamento e l'ordinamento correnti sono indicati da una freccia nella colonna.The current sort column and sort order is indicated by an arrow on the column.

Raggruppamento delle attivitàGrouping Tasks

È possibile raggruppare le attività in base a una qualsiasi colonna nella visualizzazione elenco.You can group tasks based on any column in the list view. Ad esempio, facendo clic con il pulsante destro del mouse sull'intestazione di colonna Stato e scegliendo Raggruppa per > [stato], è possibile raggruppare tutte le attività con lo stesso stato.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. Ad esempio, è possibile visualizzare rapidamente in attesa di attività in modo che è possibile concentrarsi sul motivo del blocco.For example, you could quickly see awaiting tasks so that you could focus on why they are blocked. È possibile inoltre comprimere un gruppo di poco interesse durante la sessione di debug.You can also collapse a group that is not of interest during the debug session. Allo stesso modo, è possibile raggruppare in base alle altre colonne.In the same manner, you can group by the other columns. Per contrassegnare o rimuovere il contrassegno di un gruppo, è sufficiente fare clic sul pulsante accanto all'intestazione del gruppo.A group can be (un)flagged just by clicking the button next to the group header. Nell'illustrazione seguente viene mostrata la finestra Attività nella modalità raggruppata.The following illustration shows the Tasks window in grouped mode.

Modalità raggruppata nella finestra attivitàGrouped mode in Tasks window

Visualizzazione padre/figlioParent Child View

(Questa visualizzazione è disponibile solo per codice gestito). Facendo clic con il lo stato intestazione di colonna e scegliendo Raggruppa > padre, è possibile modificare l'elenco di attività per una visualizzazione gerarchica, in cui ogni attività figlio è un nodo secondario che può essere visualizzato o nascosto sotto il relativo elemento padre.(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.

Contrassegno delle attivitàFlagging Tasks

È possibile contrassegnare il thread di attività in cui viene eseguita un'attività selezionando l'attività elenco elemento e scegliendo imposta Flag del Thread assegnato dal menu di scelta rapida oppure facendo clic sull'icona del flag nella prima colonna.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. Se si contrassegnano diverse attività, sarà successivamente possibile ordinare in base alla colonna del contrassegno in modo da portare tutte le attività contrassegnate in cima e potersi concentrare su di esse.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. È inoltre possibile usare la finestra Stack in parallelo per visualizzare solo le attività con contrassegno.You can also use the Parallel Stacks window to view only flagged tasks. In questo modo si possono filtrare le attività di poco interesse per il debug.This lets you filter out tasks that you are not interested in for debugging. I contrassegni non vengono salvati in modo permanente tra una sessione di debug e l'altra.Flags are not persisted between debugging sessions.

Blocco e sblocco delle attivitàFreezing and Thawing Tasks

Per bloccare il thread nel quale viene eseguita un'attività, fare clic con il pulsante destro del mouse sull'elemento dell'elenco di attività e scegliere Blocca thread assegnato.You can freeze the thread on which a task is running by right-clicking the task list item and then clicking Freeze Assigned Thread. Se un'attività è già bloccata, il comando è Sblocca thread assegnato. Quando si blocca un thread, questo non verrà eseguito nel momento in cui si proseguirà con l'esecuzione del codice dopo il punto di interruzione corrente.(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. Il bloccare tutti i thread, ma questo uno comando Blocca tutti i thread ad eccezione di quello che è in esecuzione l'elemento elenco attività.The Freeze All Threads But This One command freezes all threads except the one that is executing the task list item.

Nell'illustrazione seguente vengono mostrate le altre voci di menu per ogni attività.The following illustration shows the other menu items for each task.

Menu thread collegamenti nella finestra attivitàShortcut thread menu in Tasks window

Passare l'attività attiva o il FrameSwitching the Active Task or Frame

Il passa all'attività comando sospende l'attività corrente di attività attiva.The Switch to Task command makes the current task the active task. Il passa al Frame comando rende lo stack selezionato frame lo stack frame attivo.The Switch to Frame command makes the selected stack frame the active stack frame. Il contesto di debug attiva dell'attività corrente o il frame dello stack selezionate.The debugger context switches to the current task or the selected stack frame.

Vedere ancheSee also