Partager via


Comment déboguer une tâche en arrière-plan (applications Windows Runtime)

[ Cet article est destiné aux développeurs de Windows 8.x et Windows Phone 8.x qui créent des applications Windows Runtime. Si vous développez une application pour Windows 10, voir la Documentation ]

Découvrez comment déboguer une tâche en arrière-plan, notamment dans le cadre de son activation et du suivi de débogage dans le journal des événements Windows.

Ce que vous devez savoir

Technologies

Prérequis

  • Cette rubrique part du principe que vous disposez d’une application existante avec une tâche en arrière-plan que vous devez déboguer.

Instructions

Vérifier que le projet de tâche en arrière-plan est configuré comme il se doit

  • En C# et C++, vérifiez que le projet principal fait référence au projet de tâche en arrière-plan. En l’absence de cette référence, la tâche en arrière-plan n’est pas incluse dans le package d’application. avec l’attribut de point d’entrée.
  • En C# et C++, vérifiez que le Output type du projet de tâche en arrière-plan est "Fichier WinMD".
  • En JavaScript, la tâche en arrière-plan doit être dans son propre fichier JavaScript.
  • La tâche en arrière-plan doit être déclarée dans le manifeste du package. Les tâches JavaScript sont déclarées à l’aide de l’attribut de page de démarrage alors que d’autres tâches sont déclarées à l’aide de l’attribut de point d’entrée.

Déclencher des tâches en arrière-plan manuellement pour déboguer le code de la tâche en arrière-plan

Les tâches en arrière-plan peuvent être déclenchées manuellement par le biais de Microsoft Visual Studio Express 2012 pour Windows 8. Vous pouvez ensuite exécuter pas à pas le code et le déboguer.

  1. En C#, insérez un point d’arrêt dans la méthode Run et/ou écrivez la sortie de débogage à l’aide de l’espace de noms System.Diagnostics.

    En C++, insérez un point d’arrêt dans la méthode Run et/ou écrivez la sortie de débogage au moyen de la fonction OutputDebugString.

    En JavaScript, insérez un point d’arrêt dans le fichier JavaScript de la tâche en arrière-plan et/ou écrivez la sortie de débogage à l’aide de l’debug object.

  2. Déclenchez la tâche en arrière-plan à partir du menu déroulant Suspendre disponible dans la barre d’outils Emplacement de débogage. Ce menu déroulant affiche les noms des tâches en arrière-plan qui peuvent être activées par Visual Studio.

    Pour que cette opération fonctionne, la tâche en arrière-plan, doit déjà être inscrite et doit toujours attendre le déclencheur. Par exemple, si une tâche en arrière-plan a été inscrite avec un TimeTrigger à déclenchement unique et que ce déclencheur a déjà été déclenché, le lancement de la tâche via Visual Studio n’aura aucun effet.

    Remarque  Les tâches en arrière-plan qui utilisent l’objet ControlChannelTrigger ou PushNotificationTrigger et celles qui utilisent un SystemTrigger avec le type de déclencheur SmsReceived ne peuvent pas être activées de cette manière.

     

    Débogage des tâches en arrière-plan

  3. Lorsque la tâche en arrière-plan est activée, le débogueur y associe et affiche la sortie de débogage dans Visual Studio.

Déboguer l’activation de la tâche en arrière-plan

L’activation de la tâche en arrière-plan dépend de la correspondance correcte de trois éléments. Cette procédure montre comment vérifier et garantir que ces éléments correspondent tous.

  • nom et espace de noms de la classe de tâche en arrière-plan (pour JavaScript, chemin d’accès et nom de fichier de la tâche) ;
  • attribut de point d’entrée spécifié dans le manifeste du package (pour JavaScript, attribut de page de démarrage) ;
  • point d’entrée spécifié par votre application lors de l’inscription de la tâche en arrière-plan.
  1. Utilisez Visual Studio pour noter le point d’entrée de la tâche en arrière-plan :

    • En C# et C++, notez le nom et l’espace de noms de la classe de tâche en arrière-plan spécifiée dans le projet de tâche en arrière-plan.
    • En JavaScript, notez le chemin d’accès au fichier de tâche en arrière-plan et le nom de fichier.
  2. Utilisez le concepteur du manifeste pour vérifier que la tâche en arrière-plan est correctement déclarée dans le manifeste du package :

    • En C# et C++, l’attribut de point d’entrée doit correspondre à l’espace de noms de la tâche en arrière-plan suivi du nom de la classe. Par exemple, Tasks.MyBackgroundTask.
    • En JavaScript, l’attribut de page de démarrage doit représenter le chemin d’accès au fichier JavaScript pour la tâche en arrière-plan. Par exemple, js\MyBackgroundTask.js.
    • Tous les types de déclencheurs utilisés avec la tâche doivent également être indiqués.
    • Le fichier exécutable NE doit PAS être spécifié sauf si vous utilisez l’objet ControlChannelTrigger ou PushNotificationTrigger.
  3. Windows uniquement. Pour afficher le point d’entrée utilisé par Windows pour activer la tâche en arrière-plan, enable debug tracing et utilisez le journal des événements Windows.

    Si vous suivez cette procédure et que le journal des événements indique un déclencheur ou point d’entrée incorrect pour la tâche en arrière-plan, votre application n’inscrit pas correctement la tâche en arrière-plan. Pour obtenir de l’aide sur cette tâche, voir Comment inscrire une tâche en arrière-plan.

    1. Ouvrez l’observateur d’événements en accédant à l’écran d’accueil et en recherchant eventvwr.exe.
    2. Accédez à Journaux des applications et des services -> Microsoft -> Windows -> BackgroundTaskInfrastructure dans l’observateur d’événements.
    3. Dans le volet Actions, sélectionnez Affichage -> Afficher les journaux d’analyse et de débogage pour activer la journalisation des diagnostics.
    4. Sélectionnez le journal de diagnostic, puis cliquez sur Activer le journal.
    5. Essayez à présent d’utiliser votre application pour inscrire et activer la tâche en arrière-plan une nouvelle fois.
    6. Consultez les journaux de diagnostic à la recherche d’informations détaillées sur l’erreur. Cela comprend le point d’entrée inscrit pour la tâche en arrière-plan.

Recherche d’informations de débogage des tâches en arrière-plan dans l’observateur d’événements

Tâches en arrière-plan et déploiement du package Visual Studio

Si vous déployez une application utilisant des tâches en arrière-plan à l’aide de Visual Studio et si vous mettez ensuite à jour la version (majeure et/ou mineure) précisée dans le concepteur du manifeste, le redéploiement de l’application avec Visual Studio qui s’ensuivra peut entraîner un blocage des tâches en arrière-plan de l’application. Vous pouvez remédier à ce problème de la manière suivante.

  • Utilisez Windows PowerShell pour déployer l’application mise à jour (plutôt que Visual Studio). Pour cela, exécutez le script généré avec le package.
  • Si vous avez déjà déployé l’application à l’aide de Visual Studio et si ses tâches en arrière-plan sont maintenant bloquées, redémarrez ou bien déconnectez-vous et reconnectez-vous afin de relancer l’exécution des tâches en arrière-plan de l’application.
  • Vous pouvez sélectionner l’option de débogage « Toujours réinstaller mon package » pour éviter cela dans des projets C#.
  • Patientez jusqu’à ce que l’application soit prête pour un déploiement final avant d’incrémenter la version du package (ne la changez pas pendant le débogage).

Remarques

Conseils supplémentaires pour le débogage des tâches en arrière-plan :

  • Les tâches en arrière-plan JavaScript doivent appeler close() lorsqu’elles sont arrivées à terme. Si la tâche en arrière-plan n’appelle pas close(), le processus chargé de l’exécuter se poursuit. Cela peut entraîner un gaspillage de la batterie et des comportements inattendus.
  • Assurez-vous que votre application vérifie la présence d’inscriptions de tâches en arrière-plan existantes avant d’inscrire de nouveau la tâche en arrière-plan. Plusieurs inscriptions de la même tâche en arrière-plan peuvent entraîner des résultats inattendus si vous exécutez plusieurs fois la tâche en arrière-plan chaque fois qu’elle est déclenchée. Pour obtenir de l’aide sur cette tâche, voir Comment obtenir une liste des tâches en arrière-plan en attente.
  • Si la tâche en arrière-plan requiert un accès à l’écran de verrouillage, veillez à placer l’application sur l’écran de verrouillage avant d’essayer de déboguer la tâche en arrière-plan. Pour plus d’informations sur la spécification des options de manifeste pour les applications compatibles avec l’écran de verrouillage, voir Comment afficher les notifications sur l’écran de verrouillage et Comment déclarer des tâches en arrière-plan dans le manifeste de l’application.
  • Depuis Windows 8.1, les paramètres d’inscription de la tâche en arrière-plan sont validés au moment de l’inscription. Une erreur est retournée si l’un des paramètres d’inscription n’est pas valide. Vérifiez que votre application gère de façon fluide les scénarios dans lesquels l’inscription de la tâche en arrière-plan échoue. En revanche, si votre application dépend d’un objet d’inscription valide après la tentative d’inscription d’une tâche, elle peut se bloquer. Par exemple, votre application peut utiliser une instruction conditionnelle pour rechercher les erreurs d’inscription, puis retenter l’inscription qui a échoué avec d’autres valeurs de paramètres.

Pour plus d’informations sur l’utilisation de Visual Studio pour déboguer une tâche en arrière-plan, voir Comment déclencher des événements de suspension, des événements de reprise et des événements en arrière-plan dans des applications du Windows Store.

Rubriques associées

Démarrage rapide : créer et inscrire une tâche en arrière-plan

Comment inscrire une tâche en arrière-plan

Comment déclarer des tâches en arrière-plan dans le manifeste de l’application

Recommandations et listes de vérification concernant les tâches en arrière-plan

Concepteur du manifeste

Comment déclencher des événements de suspension, des événements de reprise et des événements en arrière-plan dans des applications du Windows Store

Analyse de la qualité du code des applications du Windows Store avec analyse de code Visual Studio