Görevler Penceresini Kullanma (C#, Visual Basic, C++)
Görevler penceresi İş Parçacıkları penceresine benzer, ancak her iş parçacığı yerine nesneler hakkında System.Threading.Tasks.Task veya task_handle bilgileri gösterir. İş parçacıkları gibi görevler de eşzamanlı olarak çalışabilen zaman uyumsuz işlemleri temsil eder; ancak aynı iş parçacığında birden çok görev çalıştırılabilir.
Yönetilen kodda, nesnelerle veya await ve async anahtar sözcükleriyle System.Threading.Tasks.Task (VisualBasic'te Await ve Async) çalışırken Görevler penceresini kullanabilirsiniz. Yönetilen koddaki görevler hakkında daha fazla bilgi için bkz . Paralel Programlama.
Yerel kodda görev grupları, paralel algoritmalar, zaman uyumsuz aracılar ve basit görevlerle çalışırken Görevler penceresini kullanabilirsiniz. Yerel koddaki görevler hakkında daha fazla bilgi için bkz . Eşzamanlılık Çalışma Zamanı.
Hata ayıklayıcıya her girdiğinizde Görevler penceresini kullanabilirsiniz. Hata Ayıkla menüsünde Windows'a ve ardından Görevler'e tıklayarak bu menüye erişebilirsiniz. Aşağıdaki çizimde Görevler penceresi varsayılan modunda gösterilmektedir.
Not
Yönetilen kodda, Task durumu TaskStatus.Created, TaskStatus.WaitingForActivation veya TaskStatus.WaitingToRun olan bir, yönetilen iş parçacıkları uyku veya birleştirme durumundayken Görevler penceresinde görüntülenmeyebilir.
Görevler Sütun Bilgileri
Görevler penceresindeki sütunlar aşağıdaki bilgileri gösterir.
Sütun Adı | Açıklama |
---|---|
Bayrak | Bayrak eklenmiş görevleri gösterir ve bir göreve bayrak eklemenizi veya görev bayraklarını kaldırmanızı sağlar. |
Simgeler | Sarı ok geçerli görevi gösterir. Geçerli görev, geçerli iş parçacığında en üstteki görevdir. Hata ayıklayıcı çağrıldığında geçerli olan hata ayıklama görevini(yani) beyaz ok gösterir. Duraklatma simgesi, kullanıcı tarafından dondurulan bir görevi gösterir. Listede göreve sağ tıklayarak görevi dondurabilir ve çözebilirsiniz. |
Kimlik | Görev için sistem tarafından sağlanan bir numara. Yerel kodda, görevin adresi budur. |
Statü | Görevin geçerli durumu (zamanlanmış, etkin, engellenmiş, kilitlenmemiş, bekleniyor veya tamamlandı). Zamanlanmış görev henüz çalıştırılmayan ve bu nedenle henüz bir çağrı yığınına, atanmış iş parçacığına veya ilgili bilgilere sahip olmayan görevdir. Etkin görev, hata ayıklayıcıyı bozmadan önce kodu yürüten görevdir. Bekleyen veya engellenen görev, bir olayın işaretlenmesini, serbest bırakılacak kilidi veya bitmek üzere başka bir görevi beklediği için engellenen görevdir. Kilitlenme görevi, iş parçacığı başka bir iş parçacığıyla kilitlenmemiş bekleyen bir görevdir. Blok hakkında daha fazla bilgi görmek için kilitlenme veya bekleyen görevin Durum hücresinin üzerine gelin. Uyarı: Görevler penceresi yalnızca Bekleme Zinciri Geçişi (WCT) tarafından desteklenen bir eşitleme temel öğesini kullanan engellenen bir görev için kilitlenme bildirir. Örneğin, WCT kullanan kilitlenmemiş Task bir nesne için hata ayıklayıcısı Awaiting-deadlocked değerini raporlar. WCT kullanmayan Eşzamanlılık Çalışma Zamanı tarafından yönetilen kilitlenmeli bir görev için hata ayıklayıcı Bekliyor durumunu bildirir. WCT hakkında daha fazla bilgi için bkz . Bekleme Zinciri Geçişi. |
Başlangıç Zamanı | Görevin etkin olduğu zaman. |
Süre | Görevin etkin olduğu saniye sayısı. |
Tamamlanma Süresi | Görevin tamamlanma zamanı. |
Konum | Görevin çağrı yığınındaki geçerli konum. Görevin çağrı yığınının tamamını görmek için bu hücrenin üzerine gelin. Zamanlanmış görevlerin bu sütunda bir değeri yok. |
Görev | İlk yöntem ve oluşturulduğunda göreve geçirilen tüm bağımsız değişkenler. |
Asyncstate | Yönetilen kod için görev durumu. Varsayılan olarak, bu sütun gizlidir. Bu sütunu görüntülemek için sütun başlıklarından birinin bağlam menüsünü açın. Sütunlar, AsyncState'i seçin. |
Ana | Bu görevi oluşturan görevin kimliği. Bu boşsa, görevin üst öğesi yoktur. Bu yalnızca yönetilen programlar için geçerlidir. |
İş Parçacığı Ataması | Görevin üzerinde çalıştığı iş parçacığının kimliği ve adı. |
Appdomain | Yönetilen kod için, görevin yürütülmekte olduğu uygulama etki alanı. |
Task_group | Yerel kod için, görevi zamanlayan task_group nesnesinin adresi. Zaman uyumsuz aracılar ve basit görevler için bu sütun 0 olarak ayarlanır. |
Işlem | Görevin üzerinde çalıştığı işlemin kimliği. |
Bir sütun başlığına sağ tıklayıp istediğiniz sütunları seçerek görünüme sütun ekleyebilirsiniz. (Seçimleri temizleyerek sütunları kaldırın.) Sütunları sola veya sağa sürükleyerek de yeniden sıralayabilirsiniz. Sütun kısayol menüsü aşağıdaki çizimde gösterilmiştir.
Görevleri Sıralama
Görevleri sütun ölçütlerine göre sıralamak için sütun üst bilgisine tıklayın. Örneğin, Kimlik sütunu üst bilgisine tıklayarak görevleri görev kimliğine göre sıralayabilirsiniz: 1,2,3,4,5 vb. Sıralama düzenini tersine çevirmek için sütun üst bilgisine yeniden tıklayın. Geçerli sıralama sütunu ve sıralama düzeni, sütundaki bir okla gösterilir.
Görevleri Gruplandırma
Görevleri liste görünümündeki herhangi bir sütuna göre gruplandırabilirsiniz. Örneğin, Durum sütunu üst bilgisine sağ tıklayıp Gruplandırma ölçütü>[durum] seçeneğine tıklayarak, aynı duruma sahip tüm görevleri gruplandırabilirsiniz. Örneğin, görevlerin neden engellendiğine odaklanabilmeniz için bekleyen görevleri hızla görebilirsiniz. Hata ayıklama oturumu sırasında ilgi çekici olmayan bir grubu da daraltabilirsiniz. Aynı şekilde, diğer sütunlara göre gruplandırabilirsiniz. Yalnızca grup üst bilgisinin yanındaki düğmeye tıklanarak bir gruba bayrak eklenebilir (işareti kaldırılabilir). Aşağıdaki çizimde Görevler penceresi gruplandırılmış modda gösterilmektedir.
Üst Alt Görünüm
(Bu görünüm yalnızca yönetilen kod için kullanılabilir.) Durum sütunu üst bilgisine sağ tıklayıp Üst Öğeye Göre Gruplandır'a>tıklayarak, görev listesini hiyerarşik bir görünümle değiştirebilirsiniz. Bu görünümde her alt görev, üst öğesi altında görüntülenebilir veya gizlenebilir bir alt düğümdür.
Görevleri Bayraklama
Görev listesi öğesini seçip bağlam menüsünden Bayrak Atanan İş Parçacığı'nı seçerek veya ilk sütundaki bayrak simgesine tıklayarak, görevin üzerinde çalıştığı görev iş parçacığına bayrak ekleyebilirsiniz. Birkaç görevi bayrakla işaretlerseniz, bayrak eklenmiş tüm görevleri en üste getirmek için bayrak sütununa göre sıralayabilirsiniz, böylece yalnızca bunlara odaklanabilirsiniz. Yalnızca bayrak eklenmiş görevleri görüntülemek için Paralel Yığınlar penceresini de kullanabilirsiniz. Bu, hata ayıklama için ilgilenmediğiniz görevleri filtrelemenize olanak tanır. Bayraklar hata ayıklama oturumları arasında kalıcı olmaz.
Görevleri Dondurma ve Çözme
Görev listesi öğesine sağ tıklayıp Atanan İş Parçacığını Dondur'a tıklayarak görevin üzerinde çalıştığı iş parçacığını dondurabilirsiniz. (Bir görev zaten dondurulduysa, komutu şu şekildedir: Atanan İş Parçacığını Çöz.) Bir iş parçacığını dondurduğunuz zaman, geçerli kesme noktasından sonra kodda ilerlediğinizde bu iş parçacığı yürütülmeyecektir. Tüm İş Parçacıklarını Dondur Ancak Bu Bir komutu, görev listesi öğesini yürüten iş parçacıkları dışındaki tüm iş parçacıklarını dondurur.
Aşağıdaki çizimde her görevin diğer menü öğeleri gösterilmektedir.
Etkin Görevi veya Çerçeveyi Değiştirme
Göreve Geç komutu geçerli görevi etkin görev yapar. Çerçeveye Geç komutu, seçili yığın çerçevesini etkin yığın çerçevesi yapar. Hata ayıklayıcısı bağlamı geçerli göreve veya seçili yığın çerçevesine geçer.