Verwenden das Fenster "Aufgaben" (C#, Visual Basic C++)Using the Tasks Window (C#, Visual Basic, C++)

Das Fenster Aufgaben ähnelt dem Fenster Threads. In diesem Fenster werden jedoch Informationen zu jedem System.Threading.Tasks.Task-, task_handle- oder WinJS.Promise-Objekt anstatt für die einzelnen Threads angezeigt.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. Wie Threads stellen auch Aufgaben asynchrone Vorgänge dar, die gleichzeitig ausgeführt werden können. Es dürfen jedoch mehrere Aufgaben im selben Thread ausgeführt werden.Like threads, tasks represent asynchronous operations that can run concurrently; however, multiple tasks may run on the same thread.

In verwaltetem Code können Sie das Fenster Aufgaben verwenden, wenn Sie mitSystem.Threading.Tasks.Task -Objekten oder mit den await- und async-Schlüsselwörtern arbeiten (Await und 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). Weitere Informationen zu Aufgaben in verwaltetem Code finden Sie unter zur parallelen Programmierung.For more information about tasks in managed code, see Parallel Programming.

In nativem Code können Sie das Fenster Aufgaben verwenden, wenn Sie mit Aufgabengruppen, parallelen Algorithmen, asynchronen Agents und einfachen Aufgaben arbeiten.In native code, you can use the Tasks window when you work with task groups, parallel algorithms, asynchronous agents, and lightweight tasks. Weitere Informationen zu Aufgaben in nativem Code finden Sie unter Concurrency Runtime.For more information about tasks in native code, see Concurrency Runtime.

In JavaScript können Sie das Fenster "Aufgaben" Wenn Sie mit der Zusage arbeiten .then Code.In JavaScript, you can use the Tasks window when you are working with promise .then code. Finden Sie unter asynchrone Programmierung in JavaScript (UWP-apps) für Weitere Informationen.See Asynchronous programming in JavaScript (UWP apps) for more information.

Sie können das Fenster Aufgaben immer dann verwenden, wenn die Ausführung im Debugger unterbrochen wird.You can use the Tasks window whenever you break into the debugger. Sie können darauf zugreifen, indem Sie im Menü Debuggen auf Fenster und anschließend auf Aufgaben klicken.You can access it on the Debug menu by clicking Windows and then clicking Tasks. In der folgenden Abbildung wird das Fenster Aufgaben im Standardmodus dargestellt.The following illustration shows the Tasks window in its default mode.

Fenster "Aufgaben"Tasks window

Note

In verwaltetem Code eine Task -Objekt mit dem Status der TaskStatus.Created, TaskStatus.WaitingForActivation, oder TaskStatus.WaitingToRun möglicherweise nicht angezeigt der Aufgaben Wartungszeitfensters, in verwalteten Threads in einem Standby- oder Verknüpfungszustand Zustand befinden.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.

Informationen in der Spalte „Aufgaben“Tasks Column Information

In den Spalten im Fenster Aufgaben sind die folgenden Informationen angegeben.The columns in the Tasks window show the following information.

SpaltennameColumn Name BeschreibungDescription
FlagsFlags Zeigt an, welche Aufgaben gekennzeichnet sind. Zudem können Sie Aufgaben kennzeichnen bzw. deren Kennzeichnung aufheben.Shows which tasks are flagged and lets you flag or unflag a task.
SymboleIcons Ein gelber Pfeil gibt die aktuelle Aufgabe an.A yellow arrow indicates the current task. Die aktuelle Aufgabe ist die oberste Aufgabe im aktuellen Thread.The current task is the top-most task on the current thread.

Ein weißer Pfeil gibt die unterbrechende Aufgabe an, d. h., die Aufgabe, die beim Aufrufen des Debuggers aktuell war.A white arrow indicates the breaking task, that is, the one that was current when the debugger was invoked.

Das Pausensymbol gibt eine Aufgabe an, die vom Benutzer eingefroren wurde.The pause icon indicates a task that has been frozen by the user. Sie können eine Aufgabe einfrieren und deaktivieren, indem Sie in der Liste mit der rechten Maustaste darauf klicken.You can freeze and unfreeze a task by right-clicking it in the list.
IDID Eine vom System bereitgestellte Nummer für die Aufgabe.A system-provided number for the task. In nativem Code ist diese Nummer die Adresse der Aufgabe.In native code, this is the address of the task.
StatusStatus Der aktuelle Status (geplant, aktiv, blockiert, blockiert, wartet auf oder abgeschlossen) der Aufgabe.The current state (scheduled, active, blocked, deadlocked, awaiting, or completed) of the task. Eine geplante Aufgabe wurde noch nicht ausgeführt und verfügt daher noch über keine Aufrufliste, keinen zugewiesenen Thread oder weitere Informationen.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.

Eine aktive Aufgabe hat vor dem Unterbrechen im Debugger Code ausgeführt.A active task is one that was executing code before breaking in the debugger.

Eine wartet auf oder auf blockierte Aufgabe ist blockiert, da er auf ein Ereignis signalisiert werden, eine Sperre aufgehoben wird oder auf den Abschluss einer anderen Aufgabe wartet.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.

Eine blockierte Aufgabe ist eine wartende Aufgabe, deren Thread an einem anderen Thread blockiert ist.A deadlocked task is a waiting task whose thread is deadlocked with another thread.

Zeigen Sie auf die Status Zelle für eine Aufgabe blockiert oder wartet auf, um weitere Informationen zum Block anzuzeigen.Hover over the Status cell for a deadlocked or awaiting task to see more information about the block. Warnung: Im Fenster Aufgaben werden Deadlocks nur für eine blockierte Aufgabe gemeldet, bei der eine Synchronisierungsprimitive verwendet wird, die von Wait Chain Traversal (WCT) unterstützt wird.Warning: The Tasks window reports deadlock only for a blocked task that uses a synchronization primitive that is supported by Wait Chain Traversal (WCT). Z. B. für einen Deadlock Task -Objekt, das WCT verwendet wird, meldet der Debugger erwartet-deadlocked.For example, for a deadlocked Task object, which uses WCT, the debugger reports Awaiting-deadlocked. Für eine Aufgabe mit Deadlock, die von der Concurrency Runtime verwaltet wird, die nicht WCT verwendet, meldet der Debugger Warten.For a deadlocked task that is managed by the Concurrency Runtime, which does not use WCT, the debugger reports Waiting. Weitere Informationen zu WCT finden Sie unter Wait Chain Traversal.For more information about WCT, see Wait Chain Traversal.
StartzeitStart Time Die Uhrzeit, zu der die Aufgabe aktiviert wurde.The time at which the task became active.
DauerDuration Die Anzahl von Sekunden, die die Aufgabe aktiv war.The number of seconds that the task has been active.
AbschlusszeitCompletion Time Die Uhrzeit, zu der die Aufgabe abgeschlossen wurde.The time at which the task completed.
PositionLocation Die aktuelle Position in der Aufrufliste der Aufgabe.The current location in the call stack of the task. Zeigen Sie auf diese Zelle, um die gesamte Aufrufliste für die Aufgabe anzuzeigen.Hover over this cell to see the entire call stack for the task. Für geplante Aufgaben ist in dieser Spalte kein Wert vorhanden.Scheduled tasks do not have a value in this column.
AufgabeTask Die ursprüngliche Methode und Argumente, die beim Erstellen an die Aufgabe übergeben wurden.The initial method and any arguments that were passed to the task when it was created.
AsyncStateAsyncState Für verwalteten Code ist dies der Aufgabenstatus.For managed code, the task status. Standardmäßig ist diese Spalte ausgeblendet.By default, this column is hidden. Um diese Spalte anzuzeigen, öffnen Sie das Kontextmenü für einen der Spaltenheader.To display this column, open the context menu for one of the column headers. Wählen Sie Spalten, AsyncState aus.Choose Columns, AsyncState.
ParentParent Die ID der Aufgabe, von der diese Aufgabe erstellt wurde.The ID of the task that created this task. Wenn diese Spalte leer ist, verfügt die Aufgabe über kein übergeordnetes Element.If this is blank, the task has no parent. Dies gilt nur für verwaltete Programme.This is only applicable for managed programs.
ThreadzuweisungThread Assignment Die ID und der Name des Threads, in dem die Aufgabe ausgeführt wird.The ID and name of the thread on which the task is running.
AppDomainAppDomain Für verwalteten Code die Anwendungsdomäne, in der die Aufgabe ausgeführt wird.For managed code, the application domain in which the task is executing.
task_grouptask_group Für nativen Code die Adresse des task_group-Objekts, von dem die Aufgabe geplant wurde.For native code, the address of the task_group object that scheduled the task. Für asynchrone Agents und einfache Aufgaben wird diese Spalte auf 0 festgelegt.For asynchronous agents and lightweight tasks, this column is set to 0.
ProcessProcess Die ID des Prozesses, in dem die Aufgabe ausgeführt wird.The ID of the process that the task is running on.

Sie können der Ansicht Spalten hinzufügen, indem Sie mit der rechten Maustaste auf eine Spaltenüberschrift klicken und die gewünschten Spalten auswählen.You can add columns to the view by right-clicking a column heading and then selecting the columns you want. (Entfernen Sie Spalten, indem Sie die jeweilige Auswahl aufheben.) Sie können auch die Anordnung der Spalten ändern, indem Sie sie nach links oder rechts ziehen.(Remove columns by clearing the selections.) You can also reorder columns by dragging them left or right. Das Kontextmenü für Spalten wird in der folgenden Abbildung veranschaulicht.The column shortcut menu is shown in the following illustration.

Ansicht "Kontextmenü" im Fenster "Aufgaben"Shortcut view menu in Tasks window

Sortieren von AufgabenSorting Tasks

Wenn Sie Aufgaben nach Spaltenkriterien sortieren möchten, klicken Sie auf den Spaltenheader.To sort tasks by column criteria, click the column header. Beispielsweise, indem Sie auf die ID Spaltenüberschrift klicken, können Sie die Aufgaben nach Aufgaben-ID sortieren: 1,2,3,4,5 und So weiter.For example, by clicking the ID column header, you can sort the tasks by task ID: 1,2,3,4,5 and so on. Klicken Sie erneut auf den Spaltenheader, um die Sortierreihenfolge umzukehren.To reverse the sort order, click the column header again. Die aktuelle Sortierspalte und die Sortierreihenfolge werden durch einen Pfeil in der Spalte angegeben.The current sort column and sort order is indicated by an arrow on the column.

Gruppieren von AufgabenGrouping Tasks

Sie können Aufgaben nach jeder Spalte in der Listenansicht gruppieren.You can group tasks based on any column in the list view. Wenn Sie beispielsweise mit der rechten Maustaste auf den Spaltenheader Status klicken und anschließend auf Gruppieren nach > [Status] klicken, können Sie alle Aufgaben gruppieren, die denselben Status aufweisen.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. Beispielsweise können Sie schnell erkennen, Tasks erwartet, sodass Sie untersuchen können, welchen Gründen diese blockiert werden.For example, you could quickly see awaiting tasks so that you could focus on why they are blocked. Sie können auch Gruppen reduzieren, die während der Debugsitzung nicht von Interesse sind.You can also collapse a group that is not of interest during the debug session. Auf die gleiche Weise können Sie nach den anderen Spalten gruppieren.In the same manner, you can group by the other columns. Eine Gruppe kann gekennzeichnet bzw. die Kennzeichnung einer Gruppe kann aufgehoben werden, indem Sie auf die Schaltfläche neben dem Gruppenheader klicken.A group can be (un)flagged just by clicking the button next to the group header. In der folgenden Abbildung wird das Fenster Aufgaben im gruppierten Modus dargestellt.The following illustration shows the Tasks window in grouped mode.

Gruppierter Modus im Fenster "Aufgaben"Grouped mode in Tasks window

Ansicht über- und untergeordneter ElementeParent Child View

(Diese Ansicht ist nur für verwalteten Code verfügbar.) Mit der rechten Maustaste die Status Spaltenüberschrift, und klicken Sie dann auf Group by- > übergeordneten, können Sie die Liste der Aufgaben in eine hierarchische Ansicht, in denen ändern jede untergeordnete Aufgabe ist es sich um einen Unterknoten darstellt, der angezeigt werden kann oder die unter dem übergeordneten Element ausgeblendet werden kann.(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.

Kennzeichnen von AufgabenFlagging Tasks

Sie können den Thread, der die Aufgabe, die auf dem eine Aufgabe ausgeführt wird, wählen Sie die Aufgabe Liste, und klicken dann kennzeichnen zugewiesenen Thread kennzeichnen aus dem Kontextmenü oder durch Klicken auf das Flagsymbol in der ersten Spalte.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. Wenn Sie mehrere Aufgaben kennzeichnen, können Sie nach der Flagspalte sortieren, um alle gekennzeichneten Aufgaben an oberster Stelle anzuzeigen, sodass Sie sich auf die betreffenden Aufgaben konzentrieren können.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. Sie können auch das Fenster Parallele Stapel verwenden, um ausschließlich gekennzeichnete Aufgaben anzuzeigen.You can also use the Parallel Stacks window to view only flagged tasks. Damit können Sie Aufgaben herausfiltern, die für das Debugging nicht von Interesse sind.This lets you filter out tasks that you are not interested in for debugging. Flags werden nicht zwischen Debugsitzungen beibehalten.Flags are not persisted between debugging sessions.

Einfrieren und Reaktivieren von AufgabenFreezing and Thawing Tasks

Sie können den Thread einfrieren, in dem eine Aufgabe ausgeführt wird. Klicken Sie dazu mit der rechten Maustaste auf das Aufgabenlistenelement, und klicken Sie anschließend auf Zugewiesenen Thread einfrieren.You can freeze the thread on which a task is running by right-clicking the task list item and then clicking Freeze Assigned Thread. (Wenn eine Aufgabe bereits eingefroren ist, heißt der Befehl Zugewiesenen Thread entsperren.) Wenn Sie einen Thread einfrieren, wird dieser Thread nicht ausgeführt, wenn Sie Code nach dem aktuellen Haltepunkt schrittweise durchlaufen.(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. Die Einfrieren aller Threads, aber diese eine Befehl bleibt hängen alle Threads mit Ausnahme der, der das Aufgabenlistenelement ausführt.The Freeze All Threads But This One command freezes all threads except the one that is executing the task list item.

In der folgenden Abbildung werden die anderen Menüelemente für die einzelnen Aufgaben angezeigt.The following illustration shows the other menu items for each task.

Kontextmenü "Thread" im Fenster "Aufgaben"Shortcut thread menu in Tasks window

Wechseln das aktive Aufgabe oder den ZielframeSwitching the Active Task or Frame

Die zu Aufgabe wechseln Befehl wird der aktuellen Aufgabe die aktive Aufgabe.The Switch to Task command makes the current task the active task. Die zu Rahmen wechseln Befehl wird der ausgewählte Stack Rahmen für den aktiven Stapelrahmen.The Switch to Frame command makes the selected stack frame the active stack frame. Der Debuggerkontext wechselt in den aktuellen Vorgang oder den ausgewählten Stapelrahmen.The debugger context switches to the current task or the selected stack frame.

Siehe auchSee also