2012-11-05 3 views
0

J'ai une application WPF qui, au démarrage, init un serveur de canaux nommés sur un thread séparé.
À un certain moment, les clients pipe nommés envoient des informations à ce thread qui doit à son tour mettre à jour une collection Observable dans le ViewModel.
Si vous tentez de le faire directement, vous obtenez une exception "Impossible d'accéder à la collection de cette heure sur un thread non distribué" (je paraphrase un peu l'erreur).
Quoi qu'il en soit, comment puis-je obtenir le gestionnaire du thread de tuyau nommé sur le thread UI. Je ne semble pas avoir un objet Dispatcher qui traîne que je peux utiliser pour invoquer une méthode. Suis-je censé mettre en cache au démarrage dans un statique ou singleton ou un tel.
Le DispatcherSynchronizationContext semble intéressant mais pas sûr comment en obtenir un dans ma vue et stocker dans mon modèle Voir.Thread WPF Dispatcher

Répondre

0

Vous êtes toujours en mesure d'accéder au répartiteur de l'instance Current d'application par

var dispatcher = Application.Current.Dispatcher; 

Dès que vous avez, vous pouvez exécuter des actions sur le thread d'interface utilisateur par Invoke ou BeginInvoke.

Questions connexes