IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Phone .NET Discussion :

Background Task sous Windows Phone 8


Sujet :

Windows Phone .NET

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2006
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 27
    Points : 12
    Points
    12
    Par défaut Background Task sous Windows Phone 8
    Bonjour,

    Je suis en train de développer une apps sous Windows phone 8 et je rencontre un problème avec les tâches en arrière plan. Ma tâche se déclenche correctement mais l’évènement censé m'indiquer que le téléchargement du flux RSS est terminé n'est jamais déclenché. Le même code utilisé dans l'apps en foreground émet correctement l’évènement.

    Du coup, je me pose la question au sujet de l'accès aux fonctions asynchrones et aux évènements dans les tâches en arrière plan. Sont-ils utilisables ?

    Edit: Je viens d'avoir une idée, c'est peut-être que mon "NotifyComplete();" arrive avant l'évènement et donc, la tâche s'arrête. Je vais tester ça !

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    351
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 351
    Points : 321
    Points
    321
    Par défaut
    Tu as utilisé quel type de backgroundtask ? PeriodicTask ou ResourceIntensiveTask ?
    Parce qu'une PeriodicTask ne peut excéder une durée d'exécution de 25 secondes, contre 10 minutes pour une ResourceIntensiveTask.
    Bon cela dit, 10 minutes pour récupérer un flux RSS c'est beaucoup Mais 25 secondes si ta connexion DATA est lente ou autre, ça peut se couper avant la fin.

    Les différentes contraintes pour les background task

    Cela dit, dans une BackgroundTask tu peux t'abonner à un évènement et celui-ci peut être levé heureusement.
    Concernant l'asynchronisme par contre, d'une part je ne vois guère l'intérêt (tu me dirais paralléliser encore ok) étant donné que c'est surtout utilisé pour désynchroniser la partie UI de la partie traitement afin que ces derniers ne bloquent pas la partie UI (question de réactivité de l'application).
    Donc pour l'asynchronisme je ne sais pas si c'est interdit en background task, mais je ne pense pas que tu puisses accéder au dispatcher.

    Peut être que ton problème pourrait venir de là, il faudrait plus d'éléments pour le savoir

  3. #3
    Membre à l'essai
    Inscrit en
    Novembre 2006
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 27
    Points : 12
    Points
    12
    Par défaut
    Pour l'asynchronisme, c'est juste que toutes les fonctions de téléchargement web sont asynchrone nativement, je n'ai juste pas le choix. Sinon, ma tâche est de type PeriodicTask et dure largement moins que 25 secondes (je teste en Wifi pour le moment).

    Mais je vais tester ce que j'ai dit déjà pour commencer et je donnerai le résultat ici. En fait, je lance la tâche asynchrone et le NotifyComplete est juste après au lieu d'être dans la réponse à l'évènement ! Donc forcément, ça ne peut pas fonctionner !

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    351
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 351
    Points : 321
    Points
    321
    Par défaut
    Oui oui autant pour moi, appel à des web services et autres actions ayant attrait au web sont souvent asynchrones ^^

    Effectivement si t'as fait un appel explicite à ton NotifyComplete() après l'appel de ta méthode asynchrone il y a de fortes chances que ça ne fonctionne pas (ou en tout cas, que ça ne marche pas à tous les coups)

    Il faut bien entendu l'appeler après le dernier traitement que doit effectuer ta Task. Donc là c'est sur le complete de ton téléchargement

  5. #5
    Membre à l'essai
    Inscrit en
    Novembre 2006
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 27
    Points : 12
    Points
    12
    Par défaut
    Bon, j'ai résolu le problème, c'était bien le NotifyComplete(). Je le fais maintenant qu'une fois la tâche terminée (réussie ou non) et ça fonctionne parfaitement.

    Merci pour l'aide !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Sea Ray : le premier Nokia sous Windows Phone
    Par Hinault Romaric dans le forum Windows Phone
    Réponses: 4
    Dernier message: 24/06/2011, 19h42
  2. [Projet en cours] Consultation: Création d'un jeux sous Windows Phone Seven
    Par wolfsman dans le forum Projets
    Réponses: 4
    Dernier message: 03/05/2011, 04h00
  3. flux RSS sous windows phone 7
    Par ramy0612 dans le forum Windows Phone
    Réponses: 5
    Dernier message: 03/03/2011, 12h12
  4. Programmation des boutons sous windows phone 7
    Par ramy0612 dans le forum Windows Phone
    Réponses: 2
    Dernier message: 08/02/2011, 16h31
  5. Réponses: 38
    Dernier message: 26/07/2010, 17h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo