Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Okno Úkoly se podobá okně Vlákna s tím rozdílem, že zobrazuje informace o asynchronních úlohách vytvořených pomocí vzoru async/await, označovaného také jako asynchronní vzor založený na úlohách (TAP) místo informací založených na vláknech. Podobně jako vlákna představují úlohy asynchronní operace, které se můžou spouštět souběžně; Na stejném vlákně však může běžet více úloh.
V kódu .NET můžete při práci s aplikacemi použít okno Úlohy pomocí vzoru async/await (Await a Async v jazyce VisualBasic). Zobrazení Úlohy v okně Paralelní zásobníky je ale často užitečnější pro ladění asynchronních aplikací. Další informace naleznete v tématu Ladění asynchronní aplikace.
V kódu .NET můžete při práci s aplikacemi použít okno Úlohy pomocí vzoru async/await (Await a Async v jazyce VisualBasic). Zobrazení Úlohy v okně Paralelní zásobníky je ale často užitečnější pro ladění asynchronních aplikací. Další informace najdete v tématu Zobrazení vláken a úloh v okně Paralelní zásobníky.
Tip
Pro kód C/C++ použijte zobrazení Vlákna v okně Paralelní zásobníky , pokud potřebujete ladit skupiny úloh, paralelní algoritmy, asynchronní agenty a zjednodušené úlohy. Další informace najdete v tématu Zobrazení vláken a úloh v okně Paralelní zásobníky.
Okno Úkoly můžete použít kdykoliv, když vstoupíte do ladění. Můžete k němu přistupovat v nabídce Ladění kliknutím na Windows a poté klepnutím na příkaz Úkoly. Následující obrázek znázorňuje okno Úkoly ve výchozím režimu.
Poznámka:
Ve spravovaném kódu, Task, jehož stav je TaskStatus.Created, TaskStatus.WaitingForActivation nebo TaskStatus.WaitingToRun, nemusí být zobrazen v okně Tasks, pokud jsou spravovaná vlákna ve stavu spánku nebo čekání na spojení.
Informace o sloupci Úkolů
Sloupce v okně Úkoly zobrazují následující informace.
| Název sloupce | Popis |
|---|---|
| Vlajky | Ukazuje, které úkoly jsou označeny příznakem a umožňují označit nebo zrušit označení úkolu. |
| ikony |
|
| ID | Systémové číslo úkolu. V nativním kódu je to adresa úlohy. |
| Stav | cs-CZ: Aktuální stav (naplánovaný, aktivní, zablokovaný, mrtvý bod, čekající nebo dokončený) úkolu. Když najedete myší na buňku Stav , zobrazí se další informace o bloku. Varování: Okno Úkoly hlásí zablokování pouze pro blokovanou úlohu, která používá primitivní synchronizaci podporovanou aplikací Wait Chain Traversal (WCT). Například u zablokovaného Task objektu, který používá WCT, ladicí program hlásí čekání na zablokovaný stav. U zablokované úlohy, která je spravována modulem Concurrency Runtime, který nepoužívá WCT, ladicí nástroj hlásí Čekání. Další informace o WCT naleznete v tématu Wait Chain Traversal. |
| Počáteční čas | Čas, kdy se úkol stal aktivním. |
| Doba trvání | Počet sekund, po které byl úkol aktivní. |
| Čas dokončení | Čas dokončení úkolu. |
| Umístění | Aktuální umístění v zásobníku volání úkolu. Najeďte myší na tuto buňku, aby se zobrazil celý zásobník volání pro úkol. Naplánované úkoly nemají v tomto sloupci hodnotu. |
| Úkol | Počáteční metoda a všechny argumenty, které byly předány úkolu při jeho vytvoření. |
| AsyncState | Stav úkolu pro spravovaný kód. Ve výchozím nastavení je tento sloupec skrytý. Chcete-li zobrazit tento sloupec, otevřete místní nabídku pro jedno ze záhlaví sloupců. Zvolte Sloupce, AsyncState. |
| Rodič | ID úlohy, která vytvořila tento úkol. Pokud je tato hodnota prázdná, úkol nemá nadřazený objekt. To platí jenom pro spravované programy. |
| Přiřazení vlákna | ID a název vlákna, na kterém je úloha spuštěná. |
| AppDomain | U spravovaného kódu je doména aplikace, ve které se úloha spouští. |
| task_group | V případě nativního kódu adresa task_group objektu, který úkol naplánoval. U asynchronních agentů a jednoduchých úloh je tento sloupec nastavený na hodnotu 0. |
| Proces | ID procesu, na kterém je úloha spuštěná. |
Sloupce můžete do zobrazení přidat tak, že kliknete pravým tlačítkem myši na záhlaví sloupce a vyberete požadované sloupce. (Odeberte sloupce zrušením výběru.) Sloupce můžete také změnit přetažením doleva nebo doprava. Místní nabídka sloupce je zobrazená na následujícím obrázku.
Řazení úkolů
Pokud chcete úkoly seřadit podle kritérií sloupce, klikněte na záhlaví sloupce. Například kliknutím na záhlaví sloupce ID můžete úkoly seřadit podle ID úkolu: 1,2,3,4,5 atd. Pokud chcete pořadí řazení vrátit zpět, klikněte znovu na záhlaví sloupce. Aktuální sloupec řazení a pořadí řazení je označen šipkou ve sloupci.
Seskupování úkolů
Úkoly můžete seskupit podle libovolného sloupce v zobrazení seznamu. Například tak, že kliknete pravým tlačítkem na záhlaví sloupce Stav a potom kliknete na Seskupit podle>[stav], můžete seskupit všechny úkoly se stejným stavem. Například můžete rychle vidět čekající úkoly, abyste se mohli zaměřit na to, proč jsou blokované. Můžete také sbalit skupinu, která není během relace ladění zajímavá. Stejným způsobem můžete seskupit podle ostatních sloupců. Skupinu lze (od)označit příznakem tak, že kliknete na tlačítko vedle záhlaví skupiny. Následující obrázek znázorňuje okno Úkoly v seskupeném režimu.
Zobrazení Rodič a Dítě
(Toto zobrazení je dostupné jenom pro spravovaný kód.) Když kliknete pravým tlačítkem myši na záhlaví sloupce Stav a potom kliknete na Seskupit podle>nadřazeného objektu, můžete změnit seznam úkolů na hierarchické zobrazení, ve kterém je každý podřízený úkol pod uzlem, který se dá zobrazit nebo skrýt pod nadřazenou položkou.
Označení úkolů příznakem
Můžete označit úkol ve vlákně výběrem položky v seznamu úkolů a následným zvolením možnosti Označit přiřazené vlákno z místní nabídky nebo kliknutím na ikonu příznaku v prvním sloupci. Pokud označíte příznakem několik úkolů, můžete řadit podle sloupce příznaku, aby se všechny úkoly označené příznakem přenesly na začátek, abyste se mohli soustředit jenom na ně. Pro zobrazení pouze označených úloh můžete použít okno Paralelní zásobníky. Díky tomu můžete vyfiltrovat úlohy, které vás nezajímají při ladění. Příznaky se neuchovávají mezi sezeními ladění.
Zmrazení a rozmrazování úkolů
Vlákno, na kterém je úloha spuštěna, můžete ukotvit tak, že kliknete pravým tlačítkem myši na položku seznamu úkolů a potom kliknete na Ukotvit přiřazené vlákno. (Pokud je úkol již zablokovaný, příkaz je přiřazené vlákno Thaw.) Při ukotvení vlákna se toto vlákno nespustí při procházení kódu za aktuální zarážkou. Příkaz Zmrazit všechna vlákna kromě tohoto zablokuje všechna vlákna s výjimkou toho, které provádí položku seznamu úkolů.
Následující obrázek znázorňuje ostatní položky nabídky pro každý úkol.
Přepnutí aktivního úkolu nebo rámce
Příkaz Přepnout na úkol nastaví aktuální úkol jako aktivní úkol. Příkaz Přepnout na rámec nastaví vybraný rámec zásobníku na aktivní rámec zásobníku. Kontext ladicího programu se přepne na aktuální úlohu nebo vybraný rámec zásobníku.