Partage
  • Partager sur Facebook
  • Partager sur Twitter

WPF - Actualisation écran (Multithread)

    15 septembre 2017 à 10:19:16

    Bonjour

    J'ai mon application WPF qui travaille avec un second Thread. Ce thread va dans SQL chercher des données dans une table, me les stock dans une datatable, ensuite je remplis une ObservableCollection avec ma classe dans une boucle puis à la fin de la boucle je donne la source au Binding pour l'affichage dans le XAML :

    Application.Current.Dispatcher.Invoke(new Action(() => this.DataContext = lstOperations));

    Sauf qu'au début de la fonction avant de récupérer mes données SQL je suis obligé de nettoyer cette liste pour pas que ça concatène 2 fois les données :

    Application.Current.Dispatcher.Invoke(new Action(() => lstOperations.Clear()));

    Mon problème est le suivant : l'écran se vide, travaille, puis recharge les données

    Quelle serait la façon de faire qui permettrait de ne pas voir l'écran se vider et que le tout soit remplacé une fois le traitement terminé ?

    Par avance, merci.

    • Partager sur Facebook
    • Partager sur Twitter
      15 septembre 2017 à 16:49:05

      Hello,

      Qu'est-ce qui prend du temps dans le code que tu viens de nous copier/coller ?  
      On est d'accord que tu n'utilises pas le Dispatcher pour récupérer tes données depuis la base de données ?

      SteveFeller a écrit:

      Sauf qu'au début de la fonction avant de récupérer mes données SQL je suis obligé de nettoyer cette liste pour pas que ça concatène 2 fois les données

      Non pas de raison, il nous faudrait un peu plus de code pour ça mais si le binding est fait correctement avec NotifyPropertyChanged alors le simple fait de modifier la datasource de ta table devrait suffire à la rafraîchir sans que tu ais besoin de faire tout ça toi-même en réinventant la roue.

      Regarde comment fonctionne le data binding en WPF ça devrait sûrement t'aider et t'éviter tout ça.



      -
      Edité par Pyrobolser 15 septembre 2017 à 16:50:13

      • Partager sur Facebook
      • Partager sur Twitter
      Si un message vous a aidé, n'oubliez pas le +1 et de passer votre sujet en "Résolu" ! :)

      WPF - Actualisation écran (Multithread)

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown