Bonjour,
Il est maintenant connu que WPF (XAML) interdit toute modification de l'interface ailleurs que dans le Thread principal.
Dans le cadre mon application, j'ai un BackgroundWorker qui doit générer des UserControls, et forcement ca ne marche pas.
Je ne peux pas me passer du BackgroundWorker car la génération est plutôt longue et ne doit pas bloquer l'application, de plus j'affiche la progression dans une ProgressBar.
Donc, en utilisant les quelques neurones qu'il me reste, je me suis débrouillé pour que :
- Le BackgroundWorker me crée tous les éléments utiles pour créer mes UserControls.
- Le BackgroundWorker remplit un tableau contenant tous ces élements.
- Le BackgroundWorker fait correctement progresser ma ProgressBar.
- Une fois le BackgroundWorker terminé, l'event RunWorkerCompleted est lancé.
Je souhaiterai maintenant créer mes UserControls à partir de mon tableau d'éléments, mais cela dans le Thread Principal pour ne pas avoir d'erreur... (car je dois faire des "new UCtest()" qui lève une erreur si ce n'est pas le thread principal qui s'en occupe)
Malheureusement, je ne vois pas comment faire.
Je ne sais pas si j'étais très clair, mais en même temps le problème est assez compliqué aussi.
J'ai essayé :
- Créer mes UCs depuis la fonction du RunWorkerCompleted , sans succès.
- Mon RunWorkerCompleted lance une autre fonction via un Dispatcher, sans succés.
- Mon RunWorkerCompleted place un booléen qui débloque mon thread principal qui attend, mais si le thread principal est bloqué en attendant, mon BackgroundWorker n'a plus d'intérêt.
- Mon RunWorkerCompleted lance une autre évènement pour être capté par le thread principal, mais ca ne marche pas comme ca...
Je suis assez perdu là...à l'aide !!
Partager