Aracılığıyla paylaş


Arka plan görevinde hata ayıklama

Önemli API'ler

  • Windows.ApplicationModel.Background

Windows olay günlüğünde arka plan görevinin etkinleştirilmesi ve hata ayıklama takibi dahil olmak üzere, bir arka plan görevinin hatalarını nasıl ayıklayacağınızı öğrenin.

İşlem dışı ve işlem içi arka plan görevlerinde hata ayıklama

Bu konu, öncelikli olarak ana uygulamadan bağımsız bir işlemde çalışan arka plan görevlerini ele alır. İşlem içi arka plan görevinde hata ayıklarsanız, ayrı bir arka plan görev projeniz olmaz ve OnBackgroundActivated() üzerinde bir kesme noktası ayarlayabilirsiniz (işlem içi arka plan kodunuzun çalıştığı yer) ve arka plan kodunuzun yürütülmesini tetikleme yönergeleri için arka plan görev kodunda hata ayıklamak için arka plan görevlerini el ile tetikleme bölümündeki 2. adıma bakın.

Arka plan görev projesinin doğru ayarlandığından emin olun

Bu konu başlığında, hata ayıklamak için arka plan görevine sahip mevcut bir uygulamanız olduğu varsayılır. Aşağıdakiler, işlem dışında çalışan arka plan görevlerine özgüdür ve işlem içi arka plan görevleri için geçerli değildir.

  • C# ve C++'da, ana projenin arka plan görev projesine başvurdığından emin olun. Bu bağlantı yerinde değilse, arka plan görevi uygulama paketine dahil edilmeyecektir.
  • C# ve C++'da, arka plan görev projesinin Çıkış türünün "Windows Çalışma Zamanı Bileşeni" olduğundan emin olun.
  • Arka plan sınıfı, paket bildirimindeki giriş noktası özniteliğinde bildirilmelidir.

Arka plan görev kodunda hata ayıklamak için arka plan görevlerini el ile tetikleme

Arka plan görevleri Microsoft Visual Studio aracılığıyla el ile tetiklenebilir. Ardından kodda adım adım ilerleyebilir ve kodun hatalarını ayıklayabilirsiniz.

  1. C# dilinde, arka plan sınıfının Run yöntemine bir kesme noktası koyun (işlem içi arka plan görevleri için kesme noktasını App.OnBackgroundActivated() içine yerleştirin) ve/veya System.Diagnostics kullanarak hata ayıklama çıktısı yazın.

    C++'da, arka plan sınıfının Çalıştır işlevine bir kesme noktası koyun (işlem içi arka plan görevleri için kesme noktasını App.OnBackgroundActivated() içine yerleştirin) ve/veya OutputDebugString kullanarak hata ayıklama çıktısı yazın.

  2. Uygulamanızı hata ayıklayıcıda çalıştırın ve ardından Yaşam Döngüsü Olayları araç çubuğunu kullanarak arka plan görevini tetikleyin. Bu açılan listede, Visual Studio tarafından etkinleştirilebilen arka plan görevlerinin adları gösterilir.

    Uyarı

    Visual Studio'da Yaşam Döngüsü Olayları araç çubuğu seçenekleri varsayılan olarak gösterilmez. Bu seçenekleri göstermek için Visual Studio'da geçerli araç çubuğuna sağ tıklayın ve Konum Hatalarını Ayıkla seçeneğinin etkinleştirildiğinden emin olun.

    Bunun çalışması için arka plan görevinin zaten kayıtlı olması ve tetikleyiciyi bekliyor olması gerekir. Örneğin, bir arka plan görevi tek seferlik bir TimeTrigger ile kaydedildiyse ve bu tetikleyici zaten tetiklendiyse, görevi Visual Studio aracılığıyla başlatmanın hiçbir etkisi olmaz.

    Uyarı

    Aşağıdaki tetikleyicileri kullanan arka plan görevleri şu şekilde etkinleştirilemez: Uygulama tetikleyicisi, MediaProcessing tetikleyicisi, ControlChannelTrigger, PushNotificationTrigger ve SmsReceived tetikleyici türüne sahip bir SystemTrigger kullanan arka plan görevleri.
    Uygulama tetikleyicisi ve MediaProcessingTrigger, kodda trigger.RequestAsync()ile manuel olarak işaretlenebilir.

    arka plan görevleri hata ayıklama

  3. Arka plan görevi etkinleştirildiğinde, hata ayıklayıcı buna eklenir ve VS'de hata ayıklama çıktısını görüntüler.

Arka plan görevi etkinleştirmeyi ayıklama

Uyarı

Bu bölüm, işlem dışı olan arka plan görevlerine özgüdür ve işlem içi arka plan görevleri için geçerli değildir.

Arka plan görevi etkinleştirme üç şeye bağlıdır:

  • Arka plan görev sınıfının adı ve ad alanı
  • Paket bildiriminde belirtilen giriş noktası özniteliği
  • Arka plan görevini kaydederken uygulamanız tarafından belirtilen giriş noktası
  1. Arka plan görevinin giriş noktasını not almak için Visual Studio'yu kullanın:

    • C# ve C++'da, arka plan görev projesinde belirtilen arka plan görev sınıfının adını ve ad alanını not edin.
  2. Arka plan görevinin paket bildiriminde doğru şekilde bildirildiğini denetlemek için bildirim tasarımcısını kullanın:

    • C# ve C++'da giriş noktası özniteliği arka plan görev ad alanıyla ve ardından sınıf adıyla eşleşmelidir. Örneğin: RuntimeComponent1.MyBackgroundTask.
    • Görevle birlikte kullanılan tüm tetikleyici türleri de belirtilmelidir.
    • ControlChannelTrigger veya PushNotificationTriggerkullanmadığınız sürece yürütülebilir dosya BELIRTİlMEMESİ GEREKİr.
  3. Yalnızca Windows. Windows tarafından arka plan görevini etkinleştirmek için kullanılan giriş noktasını görmek için hata ayıklama izlemeyi etkinleştirin ve Windows olay günlüğünü kullanın.

    Bu yordamı izlerseniz ve olay günlüğü arka plan görevi için yanlış giriş noktasını veya tetikleyiciyi gösterirse, uygulamanız arka plan görevini doğru kaydetmiyordur. Bu görevle ilgili yardım için bkz . Arka plan görevini kaydetme.

    1. Başlangıç ekranına gidip eventvwr.exearaması yaparak olay görüntüleyicisini açın.
    2. Olay görüntüleyicisinde Uygulama ve Hizmet Günlükleri ->Microsoft ->Windows ->BackgroundTaskInfrastructure bölümüne gidin.
    3. Eylemler bölmesinde Görünüm ->Tanılama günlüğünü etkinleştirmek için Analiz ve Hata Ayıklama Günlüklerini Göster seçin.
    4. Tanılama günlüğü'yi seçin ve GünlüğüEtkinleştir'e tıklayın.
    5. Şimdi arka plan görevini kaydetmek ve etkinleştirmek için uygulamanızı kullanmayı deneyin.
    6. Ayrıntılı hata bilgileri için tanılama günlüklerini görüntüleyin. Bu, arka plan görevi için kaydedilen başlangıç noktasını içerir.

arka plan görevleri hata ayıklama bilgileri için olay görüntüleyicisi

Arka plan görevleri ve Visual Studio paket dağıtımı

Arka plan görevlerini kullanan bir uygulama Visual Studio kullanılarak dağıtılırsa ve Bildirim Tasarımcısı'nda belirtilen sürüm (birincil ve/veya ikincil) güncelleştirilirse, daha sonra uygulamayı Visual Studio ile yeniden dağıtmak uygulamanın arka plan görevlerinin durmasına neden olabilir. Bu durum aşağıdaki gibi düzeltilebilir:

  • Paketle birlikte oluşturulan betiği çalıştırarak güncelleştirilmiş uygulamayı (Visual Studio yerine) dağıtmak için Windows PowerShell'i kullanın.
  • Visual Studio kullanarak uygulamayı zaten dağıttıysanız ve arka plan görevleri artık duruyorsa, uygulamanın arka plan görevlerinin yeniden çalışmasını sağlamak için cihazı yeniden başlatın veya oturum kapatıp yeniden açın.
  • C# projelerinde bunu önlemek için "Paketimi her zaman yeniden yükle" hata ayıklama seçeneğini belirleyebilirsiniz.
  • Uygulama, paket sürümünü artırmak için son dağıtıma hazır olana kadar bekleyin (hata ayıklarken uygulamayı değiştirmeyin).

Açıklamalar

  • Arka plan görevini yeniden kaydetmeden önce uygulamanızın mevcut arka plan görevi kayıtlarını denetlediğinden emin olun. Aynı arka plan görevinin birden çok kaydı, arka plan görevini her tetiklendiğinde birden çok kez çalıştırarak beklenmeyen sonuçlara neden olabilir.
  • Arka plan görevi kilit ekranı erişimi gerektiriyorsa, arka plan görevinin hatalarını ayıklamaya çalışmadan önce uygulamayı kilit ekranına yerleştirdiğinden emin olun. Kilit ekranı özellikli uygulamalar için bildirim seçeneklerini belirtme hakkında bilgi için bkz. Uygulama bildiriminde arka plan görevlerini bildirme.
  • Arka plan görevi kayıt parametreleri kayıt sırasında doğrulanır. Kayıt parametrelerinden herhangi biri geçersizse bir hata döndürülür. Uygulamanızın arka plan görevi kaydı başarısız olduğunda bu senaryoları doğru bir şekilde işlediğinden emin olun. Aksi takdirde, uygulamanız bir görevi kaydetmeye çalışırken geçerli bir kayıt nesnesine bağlıysa, çökebilir.

Arka plan görevinde hata ayıklamak için VS kullanma hakkında daha fazla bilgi için bkz. UWP uygulamalarında askıya alma, sürdürme ve arka plan olaylarını tetikleme.