Windows 8′de Arka Plan Görevleri – Debug

   Windows 8’de C# ile uygulama geliştirmenin detaylarını paylaştığım makale serisi içerisinde farkında olmadan arka plan görevleri için ufak bir alt seri oluşturmuşum 🙂 Önceki iki yazımda arka plan görevlerinin ne olduğu ve nelere dikkat edilmesi gerektiğini inceledikten sonra ilk arka plan görevimizi nasıl geliştirebileceğimizi öğrenmiştik. Şimdi sıra geliştirdiğimiz bu arka plan görevlerini test ederek hata ayıklamaya geldi.

   Arka plan görevleri, yapılandırmaları sırasında verilen bilgiler doğrultusunda ilgili tetikleyici tarafından tetiklenerek çalışmaktadırlar. Bu tetkikleme belirli sıklıklarla bir zamanlayıcı sayesinde olabileceği gibi kullanıcının sisteme giriş yapması gibi durumlarda da olabilir. Bu durumda arka plan kodumuzun tam çalışma anı her zaman tahmin edilemeyebileceği ya da tetiklenemeyeceği için hata ayıklama süreci göz önüne alınmadan yapılacak bir sistem tasarımı biz yazılım geliştiricileri çok zorlayabilirdi. Öte yandan sizlerle daha önce de paylaştığım gibi arka plan görevleri tek başlarına çalışabilir kodlar değildirler. BackgroundTaskHost.exe, wwahost.exe  ya da kimi  durumlarda bizlerin geliştirdiği uygulamalar arka plan görevlerine ev sahipliği yapacaktırlar. Bu durumda Visual Studio içerisiden başlatılan bir hata ayıklama oturumunun arka plan görevlerinde de hata ayıklama yapılabilmesi için bu uygulamaları da takip etmesi gerekecektir.

   Arka plan görevleri ve Visual Studio 2012 tasarlanırken bu senaryolar göz önüne alınarak öncelikle arka plan görevimize ev sahipliği yapacak olan uygulamada takip edilmeye başlanır. Ev sahipliği yapan uygulamayı bizim harici olarak takip ettirmemize gerek kalmaksızın Visual Studio bilgisayar üzerindeki aktif süreçleri takip ederek ev sahibi uygulama başladığında otomatik olarak takip edecektir. Sağlanan ikinci kolaylık ise hata ayıklama oturumunda tetikleyicileri simüle edebilmemizdir. Bu sayede hata ayıklama oturumunun istediğimiz bir anında arka plan görevimizin dinlediği tetikleyici oluşmuş gibi davranabiliriz.

   Bir önceki paragrafta paylaştığım bilgilerin yanına, bir uygulamanın aynı anda sadece bir debugger tarafından takip edilebileceğini de eklediğimizde aynı anda sadece bir Visual Studio’nun yukarıdaki gibi arka plan görevlerinde hata ayıklama için kullanılabileceğini söyleyebiliriz. Tabi bunu söylerkenki varsayımım ev sahibi uygulamanın BackgroundTaskHost.exe olduğudur. Eğer arka plan görevlerine kendi uygulamalarımız ev sahipliği yapacak olursa tabi ki bu durum değişecektir.

   Yukarıda saydığım hata ayıklama senaryosu için ControlChannel, PushNotification ve SmsReceived gibi tetiklenmesi durumunda arka plan görevine bir veri ileten tetikleyiciler istisna oluşturmaktadırlar. Bu tetikleyicilerin ilettiği bilgiler Visual Studio tarafından (en azından şimdilik) simüle edilemediği için debug edilebilmeleri için İşletim sistemince normal işleyişleri içerisinde tetiklenmeleri gerekmektedir.

   Geliştirdiğiniz bir uygulamada arka plan görevlerinde hata ayıklaması yapabilmek için öncelikle “Debug Location” araç çubuğunu açmalısınız. Bunun için Visual Studio menüsünde ya da açık bir araç çubuğu üzerinde boş bir alana gelip sağ tıklayarak açılan menüden “Debug Location” seçeneğini seçmeniz yeterli olacaktır.

Visual Studio menüsünde ya da açıp bir araç çubuğu üzerinde boş bir alana gelerek sağ tıklayarak gelen menüden “Debug Location” seçeneğini seçebilirsiniz

 

    Bu işlem ardında uygulamanızı debug modunda başlatmalısınız. Uygulamanız çalışmaya başadıktan sonra eğer herhangi bir arka plan görevi henüz kayıt edilmediyse Debug Location araç çubuğu aşağıdaki gibi görünecektir;

Henüz bir arka plan görevi kayıt edilmediyse Debug Location araç çubuğu bu şekilde görülecektir

 

   Uygulamanız içerisinde arka plan görev kaydının yapılmasının ardında ise göreve vermiş olduğunuz isimle burada bir girdi oluştuğunu göreceksiniz;

En az bir arka plan görevi kayıt kayıt edildikten sonra Debug Location araç çubuğu bu şekilde görülecektir

   Debug Location araç çubuğunda arka plan görevinizin adını gördükten sonra artık tek yapmanız gereken görevinize ait kod içerisine en az bir break point yerleştirmek. Yukardaki ekranda arka plan görevini seçtiğinizde normal bir tetikleme olmuşçasına görev başlatılacaktır. Uygulamanın işleyişi ilgili satıra geldiğinde Visual Studio’nun devreye girerek size alışkın olduğunuz bir hata ayıklama deneyimi sunacağına emin olabilirsiniz.

Fatih Boy

Ankara'da yaşayan Fatih, bir kamu kurumunda danışman olarak çalışmaktadır. ALM süreçleri, kurumsal altyapı ve yazılım geliştirme konularında destek vermektedir. Boş zamanlarında açık kaynak kodlu projeler geliştirmeyi ve bilgisini yazdığı makalelerle paylaşmayı seven Fatih, aynı zamanda Visual C# konusundan Microsoft tarafından dört yıl üst üste MVP (En Değerli Profesyonel) ödülüne layık görülmüştür. İş hayatı boyunca masaüstü uygulamaları, web teknolojileri, akıllı istemciler gibi konularda Asp.Net, Php, C#, Java programlama dilleri ve MySql, MsSql ve Oracle gibi veritabanı yönetim yazılımları ile çalışmıştır. İngilizce ve Türkçe olarak yayınlanan makalelerini gerek İngilizce bloğunda, gerekse de Türkçe bloğunda bulabileceğiniz gibi web sitesinden de açık kaynak kodlu geliştirdiği yazılımlarına ulaşabilirsiniz.
vCard - Twitter - Facebook - Google+

1 Yorum

  1. Pingback: Fatih Boy (@fatihboy)

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir