Menggunakan Jendela Tugas (C#, Visual Basic, C++)
Jendela Tugas menyerupan jendela Utas , kecuali menampilkan informasi tentang System.Threading.Tasks.Task atau task_handle objek alih-alih setiap utas. Seperti alur, tugas merepresentasikan operasi asinkron yang dapat berjalan bersamaan; namun, beberapa tugas dapat berjalan pada alur yang sama.
Dalam kode terkendali, Anda dapat menggunakan jendela Tugas saat Anda bekerja dengan objek System.Threading.Tasks.Task atau dengan kata kunci tunggu dan asinkron (Tunggu dan Asinkron di VisualBasic). Untuk informasi selengkapnya tentang tugas dalam kode terkendali, lihat Pemrograman Paralel.
Dalam kode asli, Anda dapat menggunakan jendela Tugas saat bekerja dengan grup tugas, algoritma paralel, agen asinkron, dan tugas ringan. Untuk informasi selengkapnya tentang tugas dalam kode asli, lihat Runtime Konkurensi.
Anda dapat menggunakan jendela Tugas setiap kali Anda masuk ke debugger. Anda dapat mengaksesnya di menu Debug dengan mengklik Windows lalu mengklik Tugas. Ilustrasi berikut ini menunjukkan jendela Tugas dalam mode defaultnya.
Catatan
Dalam kode terkelola, Task yang memiliki status TaskStatus.Created, TaskStatus.WaitingForActivation, atau TaskStatus.WaitingToRun mungkin tidak ditampilkan di jendela Tugas saat alur terkelola dalam status tidur atau bergabung.
Informasi Kolom Tugas
Kolom di jendela Tugas menunjukkan informasi berikut ini.
Nama kolom | Deskripsi |
---|---|
Bendera | Menunjukkan tugas mana yang ditandai dan memungkinkan Anda menandai atau menghapus tanda pada tugas. |
Ikon | Panah kuning menunjukkan tugas saat ini. Tugas saat ini adalah tugas terbanyak pada alur saat ini. Panah putih menunjukkan tugas yang melanggar, yaitu, yang merupakan saat ini ketika debugger dipanggil. Ikon jeda menunjukkan tugas yang telah dibekukan oleh pengguna. Anda dapat membekukan dan mencairkan tugas dengan mengklik kanan tugas dalam daftar. |
ID | Nomor yang disediakan sistem untuk tugas. Dalam kode asli, ini adalah alamat tugas. |
Keadaan | Status saat ini (terjadwal, aktif, diblokir, mengalami kebuntuan, menunggu, atau selesai) dari tugas. Tugas terjadwal adalah tugas yang belum dijalankan dan, oleh karena itu, belum memiliki tumpukan panggilan, alur yang ditetapkan, atau informasi terkait. Tugas aktif adalah tugas yang menjalankan kode sebelum melanggar debugger. Tugas yang menunggu atau diblokir adalah tugas yang diblokir karena menunggu peristiwa diberi signal, kunci yang akan dilepaskan, atau tugas lain untuk diselesaikan. Tugas yang mengalami kebuntuan adalah tugas menunggu yang alurnya mengalami kebuntuan dengan alur lain. Arahkan mouse ke atas sel Status untuk tugas yang mengalami kebuntuan atau menunggu untuk melihat informasi selengkapnya tentang blok tersebut. Peringatan: Jendela Tugas melaporkan kebuntuan hanya untuk tugas yang diblokir yang menggunakan primitif sinkronisasi yang didukung oleh Wait Chain Traversal (WCT). Misalnya, untuk objek Task yang mengalami kebuntuan, yang mana menggunakan WCT, debugger melaporkan Menunggu-mengalami kebuntuan. Untuk tugas yang mengalami kebuntuan yang dikelola oleh Runtime Konkurensi, yang tidak menggunakan WCT, debugger melaporkan Menunggu. Untuk informasi selengkapnya tentang WCT, lihat Wait Chain Traversal. |
Waktu Mulai | Waktu saat tugas menjadi aktif. |
Durasi | Jumlah detik selama tugas aktif. |
Waktu Penyelesaian | Waktu saat tugas selesai. |
Location | Lokasi saat ini di tumpukan panggilan dari tugas. Arahkan mouse ke atas sel ini guna melihat seluruh tumpukan panggilan untuk tugas tersebut. Tugas terjadwal tidak memiliki nilai di kolom ini. |
Tugas | Metode awal dan argumen apa pun yang diteruskan ke tugas saat ia dibuat. |
AsyncState | Untuk kode terkendali, merupakan status tugasnya. Secara default, kolom ini disembunyikan. Untuk menampilkan kolom ini, buka menu konteks untuk salah satu header kolom. Pilih Kolom, AsyncState. |
Orangtua | ID tugas yang membuat tugas ini. Jika kosong, tugas tidak memiliki induk. Hal ini hanya berlaku untuk program terkelola. |
Penetapan Alur | ID dan nama alur tempat tugas dijalankan. |
AppDomain | Untuk kode terkendali, merupakan domain aplikasi tempat tugas dijalankan. |
task_group | Untuk kode asli, merupakan alamat objek task_group yang menjadwalkan tugas. Untuk agen asinkron dan tugas ringan, kolom ini diatur ke 0. |
Proses | ID kumpulan tempat tugas dijalankan. |
Anda bisa menambahkan kolom ke tampilan dengan mengklik kanan judul kolom lalu memilih kolom yang Anda inginkan. (Hapus kolom dengan mengosongkan pilihan.) Anda juga dapat menyusun ulang kolom dengan menyeretnya ke kiri atau kanan. Menu pintasan kolom diperlihatkan dalam ilustrasi berikut.
Mengurutkan Tugas
Untuk mengurutkan tugas berdasarkan kriteria kolom, klik header kolom. Misalnya, dengan mengklik header kolom ID, Anda bisa mengurutkan tugas berdasarkan ID tugas: 1,2,3,4,5 dan seterusnya. Untuk membalikkan urutan pengurutan, klik header kolom sekali lagi. Kolom pengurutan saat ini dan susunan urutan ditunjukkan oleh panah pada kolom.
Mengelompokkan Tugas
Anda dapat mengelompokkan tugas berdasarkan kolom apa pun dalam tampilan daftar. Misalnya, dengan mengklik kanan header kolom Status lalu mengklik Kelompokkan berdasarkan>[status], Anda dapat mengelompokkan semua tugas yang memiliki status yang sama. Misalnya, Anda dapat dengan cepat melihat tugas yang menunggu sehingga Anda dapat fokus pada penyebab tugas tersebut diblokir. Anda juga dapat menciutkan grup yang tidak diinginkan selama sesi debug. Dengan cara yang sama, Anda dapat mengelompokkan berdasarkan kolom yang lain. Grup dapat (tidak)ditandai hanya dengan mengklik tombol di samping header grup. Ilustrasi berikut ini menunjukkan jendela Tugas dalam mode dikelompokkan.
Tampilan Turunan Induk
(Tampilan ini hanya tersedia untuk kode terkendali.) Dengan mengklik kanan header kolom Status lalu mengklik Kelompokkan menurut>Induk, Anda dapat mengubah daftar tugas menjadi tampilan hierarkis, di mana setiap tugas turunan adalah sub-node yang dapat ditampilkan atau disembunyikan di bawah induknya.
Menandai Tugas
Anda dapat menandai alur tugas tempat tugas dijalankan dengan memilih item daftar tugas lalu memilih Tandai Alur yang Ditetapkan dari menu konteks, atau dengan mengklik ikon bendera di kolom pertama. Jika Anda menandai beberapa tugas, Anda kemudian dapat mengurutkan pada kolom bendera untuk membawa semua tugas yang ditandai ke atas sehingga Anda bisa fokus pada tugas tersebut. Anda juga dapat menggunakan jendela Tumpukan Paralel untuk menampilkan hanya tugas yang ditandai. Ini memungkinkan Anda memfilter tugas yang tidak Anda inginkan untuk penelusuran kesalahan. Bendera tidak bertahan di antara sesi penelusuran kesalahan.
Membekukan dan Mencairkan Tugas
Anda dapat membekukan alur tempat tugas berjalan dengan mengklik kanan item daftar tugas, lalu mengklik Bekukan Alur yang Ditetapkan. (Jika tugas sudah dibekukan, perintahnya adalah Cairkan Alur yang Ditetapkan.) Saat Anda membekukan alur, alur tersebut tidak akan dijalankan saat Anda menelusuri kode setelah titik henti saat ini. Perintah Bekukan Semua Alur Kecuali Ini membekukan semua alur kecuali alur yang tengah menjalankan item daftar tugas.
Ilustrasi berikut ini menunjukkan item menu lainnya untuk setiap tugas.
Mengalihkan Tugas Atau Bingkai Aktif
Perintah Beralih ke Tugas menjadikan tugas saat ini sebagai tugas aktif. Perintah Beralih ke Bingkai menjadikan bingkai tumpukan yang dipilih sebagai bingkai tumpukan aktif. Konteks debugger beralih ke tugas saat ini atau bingkai tumpukan yang dipilih.