Delen via


Het takenvenster (C#, Visual Basic) gebruiken

Het venster Taken lijkt op het venster Threads , met uitzondering van informatie over asynchrone taken die zijn gemaakt met behulp van het patroon asynchroon/wachten, ook wel het asynchrone patroon op basis van taken (TAP) genoemd in plaats van threadgegevens. Net als threads vertegenwoordigen taken asynchrone bewerkingen die gelijktijdig kunnen worden uitgevoerd; meerdere taken kunnen echter worden uitgevoerd op dezelfde thread.

In .NET-code kunt u het venster Taken gebruiken wanneer u met apps werkt met behulp van het async/await-patroon (Await and Async in VisualBasic). De weergave Taken in het venster Parallelle stacks is echter vaak handiger voor het opsporen van asynchrone toepassingen. Zie Fouten opsporen in een asynchrone toepassing voor meer informatie.

In .NET-code kunt u het venster Taken gebruiken wanneer u met apps werkt met behulp van het async/await-patroon (Await and Async in VisualBasic). De weergave Taken in het venster Parallelle stacks is echter vaak handiger voor het opsporen van asynchrone toepassingen. Voor meer informatie, zie Threads en taken weergeven in het venster Parallelle stacks.

Aanbeveling

Voor C/C++-code gebruikt u de weergave Threads in het venster Parallelle stacks wanneer u fouten moet opsporen in taakgroepen, parallelle algoritmen, asynchrone agents en lichtgewicht taken. Voor meer informatie, zie Threads en taken weergeven in het venster Parallelle stacks.

U kunt het venster Taken gebruiken wanneer u inbreekt in de debugger. U kunt deze openen in het menu Foutopsporing door op Windows te klikken en vervolgens op Taken te klikken. In de volgende afbeelding ziet u het venster Taken in de standaardmodus.

Takenvenster

Takenvenster

Opmerking

In beheerde code wordt een Task met de status TaskStatus.Created, TaskStatus.WaitingForActivation of TaskStatus.WaitingToRun mogelijk niet weergegeven in het venster Taken wanneer beheerde threads de status slaap of join hebben.

Gegevens van takenkolommen

In de kolommen in het venster Taken ziet u de volgende informatie.

Kolomnaam Beschrijving
vlaggen Hier ziet u welke taken zijn gemarkeerd en kunt u een taak markeren of de vlag opheffen.
pictogrammen Gele pijl Een gele pijl geeft de huidige taak aan. De huidige taak is de belangrijkste taak op de huidige thread.

Groene pijl Een groene pijl geeft de context van het huidige foutopsporingsprogramma aan (na een schakeloptie naar de taak in het foutopsporingsprogramma).

Witte pijl Een witte pijl geeft de onderbrekende taak aan, dat wil zeggen, de taak die actueel was toen de debugger werd geïnitialiseerd.

Pictogram Pauze Het pauzepictogram geeft een taak aan die door de gebruiker is gepauzeerd. U kunt een taak blokkeren en de blokkering opheffen door er met de rechtermuisknop op te klikken in de lijst.
ID-kaart Een door het systeem opgegeven nummer voor de taak. In systeemeigen code is dit het adres van de taak.
Status De huidige status (gepland, actief, geblokkeerd, impasse, wachten of voltooid) van de taak.

Geplande status Gepland. Een geplande taak is een taak die nog niet is uitgevoerd en daarom nog geen aanroepstack, toegewezen thread of gerelateerde informatie bevat.

Status actief Actief. Een actieve taak is een taak die code uitvoerde voordat deze in de debugger werd gestopt.

Status geblokkeerd Geblokkeerd. Een geblokkeerde taak is een taak die wordt geblokkeerd omdat er wordt gewacht op een gebeurtenis die wordt gesignaleerd, een vergrendeling die moet worden vrijgegeven of een andere taak die moet worden voltooid.

Status in afwachting In afwachting. Een niet-blokkerende, wachtende taak die gebruikmaakt van het asynchrone/wachtpatroon.

Status vastgelopen Vastgelopen. Het impassesymbool verwijst naar een wachttaak waarvan de bijbehorende thread is vastgelopen met een andere thread.

Beweeg de muisaanwijzer over de statuscel voor meer informatie over het blok. Waarschuwing: Het venster Taken rapporteert alleen een impasse voor een geblokkeerde taak die gebruikmaakt van een synchronisatieprimitief dat wordt ondersteund door Wait Chain Traversal (WCT). Bijvoorbeeld, voor een geblokkeerd Task object dat gebruikmaakt van WCT, rapporteert de debugger wachten op blokkade. Voor een geblokkeerde taak die wordt beheerd door de Concurrency Runtime en geen WCT gebruikt, meldt de debugger wachtend. Zie Wait Chain Traversal voor meer informatie over WCT.
Begintijd Het tijdstip waarop de taak actief werd.
Duur Het aantal seconden dat de taak actief is geweest.
Voltooiingstijd Het tijdstip waarop de taak is voltooid.
Plaats De huidige locatie in de call stack voor de taak. Beweeg de muisaanwijzer over deze cel om de hele call-stack voor de taak weer te geven. Geplande taken hebben geen waarde in deze kolom.
Taak De eerste methode en eventuele argumenten die zijn doorgegeven aan de taak toen deze werd gemaakt.
AsyncState De taakstatus voor beheerde code. Deze kolom is standaard verborgen. Als u deze kolom wilt weergeven, opent u het contextmenu voor een van de kolomkoppen. Kies Kolommen, AsyncState.
Ouder De ID van de taak die deze taak heeft aangemaakt. Als dit leeg is, heeft de taak geen bovenliggende taak. Dit is alleen van toepassing op beheerde programma's.
Thread-toewijzing De id en naam van de thread waarop de taak wordt uitgevoerd.
AppDomain Voor beheerde code is het toepassingsdomein waarin de taak wordt uitgevoerd.
task_group Voor systeemeigen code is het adres van het task_group-object dat de taak heeft gepland. Voor asynchrone agents en lichtgewicht taken is deze kolom ingesteld op 0.
Verwerken De id van het proces waarop de taak wordt uitgevoerd.

U kunt kolommen toevoegen aan de weergave door met de rechtermuisknop op een kolomkop te klikken en vervolgens de gewenste kolommen te selecteren. (Kolommen verwijderen door de selecties te wissen.) U kunt kolommen ook opnieuw ordenen door ze naar links of rechts te slepen. Het snelmenu voor kolommen wordt weergegeven in de volgende afbeelding.

Snelmenu in het venster Taken

Snelmenu in het venster Taken

Taken sorteren

Om taken te sorteren op kolomcriteria, klikt u op de kolomkop. Als u bijvoorbeeld op de kolomkop Id klikt, kunt u de taken sorteren op taak-id: 1,2,3,4,5 enzovoort. Als u de sorteervolgorde wilt omkeren, klikt u nogmaals op de kolomkop. De huidige sorteerkolom en sorteervolgorde worden aangegeven met een pijl op de kolom.

Taken groeperen

U kunt taken groeperen op basis van elke kolom in de lijstweergave. Als u bijvoorbeeld met de rechtermuisknop op de kolomkop Status klikt en vervolgens op Groeperen> op[status] klikt, kunt u alle taken met dezelfde status groeperen. U kunt bijvoorbeeld snel wachtende taken zien, zodat u zich kunt concentreren op de reden waarom ze worden geblokkeerd. U kunt ook een groep samenvouwen die niet van belang is tijdens de debuggingsessie. Op dezelfde manier kunt u groeperen via de andere kolommen. Een groep kan worden gemarkeerd (zonder vlag) door op de knop naast de groepskoptekst te klikken. In de volgende afbeelding ziet u het venster Taken in de gegroepeerde modus.

Gegroepeerde modus in het venster Taken

Gegroepeerde modus in het venster Taken

Ouder-kind weergave

(Deze weergave is alleen beschikbaar voor beheerde code.) Door met de rechtermuisknop op de kolomkop Status te klikken en vervolgens op Groeperen door> te klikken, kunt u de lijst met taken wijzigen in een hiërarchische weergave, waarin elke onderliggende taak een subknooppunt is dat kan worden weergegeven of verborgen onder het bovenliggende item.

Taken vlaggen

U kunt een vlag toevoegen aan de thread waarop een taak wordt uitgevoerd door het item in de takenlijst te selecteren en vervolgens Vlag toegewezen thread te kiezen in het contextmenu of door op het vlagpictogram in de eerste kolom te klikken. Als u meerdere taken markeert, kunt u vervolgens sorteren op de vlagkolom om alle gemarkeerde taken naar boven te brengen, zodat u zich er gewoon op kunt concentreren. U kunt ook het venster Parallelle stacks gebruiken om alleen taken met vlag weer te geven. Hiermee kunt u taken uitfilteren waarin u niet geïnteresseerd bent voor foutopsporing. Vlaggen blijven niet behouden tussen foutopsporingssessies.

Taken blokkeren en ontdooien

U kunt de thread waarop een taak wordt uitgevoerd blokkeren door met de rechtermuisknop op het taaklijstitem te klikken en vervolgens op Toegewezen thread blokkeren te klikken. (Als een taak al is geblokkeerd, is de opdracht Thaw Toegewezen thread.) Wanneer u een thread blokkeert, wordt die thread niet uitgevoerd wanneer u code na het huidige onderbrekingspunt doorloopt. Met de opdracht Alle threads blokkeren behalve deze worden alle threads geblokkeerd, behalve de thread die het taaklijstitem uitvoert.

In de volgende afbeelding ziet u de andere menu-items voor elke taak.

Snelkoppelingsmenu in het Takenvenster

Snelkoppelingsmenu in het Takenvenster

De actieve taak of het actieve frame wijzigen

Met de opdracht Overschakelen naar taak wordt de huidige taak de actieve taak. Met de opdracht Overschakelen naar frame wordt het geselecteerde stackframe het actieve stackframe. De context van het foutopsporingsprogramma schakelt over naar de huidige taak of het geselecteerde stackframe.