Peut/Ne WPF plusieurs GUI fils?
Peut/Ne WPF plusieurs GUI fils? Ou faut-il toujours avoir un seul thread GUI (même si j'ai plusieurs fenêtres/dialogues)?
Je pose la question parce que j'ai les événements à venir à partir d'autres threads et je tiens à les traiter dans le thread GUI (parce que j'ai besoin de modifier le contrôle de ma fenêtre principale accordings pour les événements).
Btw: je sais que j'ai besoin d'utiliser un Dispatcher
objet pour cela. Donc, je ne pouvais reformuler ma question et demander: Est-il toujours un seul Dispatcher
objet pour tous les éléments d'interface graphique en WPF?
- Avez-vous lu le thread WPF documentation du modèle? msdn.microsoft.com/en-us/library/ms741870.aspx
Vous devez vous connecter pour publier un commentaire.
Basée sur le lien dans la première réponse, j'ai fait quelques vérifications sur mon propre. J'aimerais partager les résultats ici. Tout d'abord:
Il peut y avoir plusieurs fils de GUI (et à cet effet, plusieurs
Dispatcher
cas).Cependant:
Simplement créer une nouvelle fenêtre modale ou non) ne pas créer un nouveau thread GUI. On a besoin de créer le thread de manière explicite (par la création d'une nouvelle instance de
Thread
).Remarque: au Lieu d'utiliser des threads séparés, des boîtes de dialogue modales sont susceptibles d'être réalisés en utilisant des Répartiteur.PushFrame() qui bloque l'appelant de cette méthode tout en permettant à des événements à être expédiés.
J'ai créé un simple WPF classe (de nouveau, basé sur le lien de la première réponse) pour vérifier tout ça. Je les partage ici, donc vous pouvez jouer avec elle un peu.
MainWindow.xaml:
MainWindow.xaml.cs: