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 Presentation Foundation Discussion :

BackgroundWorker & UI Update


Sujet :

Windows Presentation Foundation

  1. #1
    Membre du Club
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2006
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 82
    Points : 67
    Points
    67
    Par défaut BackgroundWorker & UI Update
    Bonjour,

    A force de me casser les dents , je viens chercher ici la solution à un problème qui de prime abord semble simple (et traité maintes fois) : mettre à jour l'UI après avoir fait l'appel à un BackgroundWorker.

    J'utilise pour ça l'évenement 'RunWorkerCompleted' du BackgroundWorker, et à l'intérieur je fais un Invoke à ma méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.Dispatcher.Invoke(new Action<ComputationResult>(updateUI), e.Result);
    (j'ai au préalable rempli le e.Result e étant le RunWorkerCompletedEventArgs appelé).

    Le problème : quand j'entre dans updateUI, il me dit qu'il ne peut pas utiliser les éléments de e.Result (le ComputationResult) parce que ce n'est pas la même thread qui les a créés.

    Help

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 70
    Points : 57
    Points
    57
    Par défaut
    Bonjour,
    Je ne connais pas ton code mais pourquoi ne pas appeler tout simplement ta fonction updateUI si tu es dans le RunWorkerCompleted?
    Style:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    worker.RunWorkerCompleted += delegate(object s, RunWorkerCompletedEventArgs args)
    {
                updateUI();
    }
    Personnnellement ça marche chez moi: je met à jour mon UI sans passer par le Dispatcher

  3. #3
    Membre du Club
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2006
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 82
    Points : 67
    Points
    67
    Par défaut
    Bonjour,

    Merci pour la réponse. En fait, ça fait exactement la même erreur : le problème n'est pas dans l'appel à updateUI, mais plutôt à l'utilisation de l'objet Result:

    Quand je suis dans updateUI(ComputationResult result) et que j'utilise result.data, ça me met :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    The calling thread cannot access this object because a different thread owns it.
    results.data étant de la donnée que j'ai remplie avec le BackgroundWorker...

    J'édite avec plus d'infos, parce que ça paraît nécessaire : results.data contient des WriteableBitmap.

    Ça pourrait le faire en les freezant (cf. ici). Je teste.

    Update : c'était bien ça. Pfiou. Merci polonain pour l'aide

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

Discussions similaires

  1. Requête update à partir d'une autre table
    Par amiral thrawn dans le forum Langage SQL
    Réponses: 5
    Dernier message: 15/02/2024, 11h40
  2. [dBase]il y a mieux que la commande sql UPDATE ?
    Par sana72 dans le forum Autres SGBD
    Réponses: 4
    Dernier message: 12/12/2002, 11h59
  3. Réponses: 3
    Dernier message: 10/11/2002, 11h03
  4. update et virgule
    Par Delph dans le forum Bases de données
    Réponses: 8
    Dernier message: 27/08/2002, 14h40

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