2009-10-11 11 views
2

Jusqu'à maintenant, quand je voulais mettre à jour un contrôle de l'interface utilisateur d'un fil non interface utilisateur I utilisé une syntaxe comme:Quel répartiteur utiliser? La fenêtre ou le contrôle?

Dispatcher.Invoke(DispatcherPriority.Normal, 
        new Action(()=>Label1.Content="New Content")); 

Maintenant, je suis en train de lire un peu plus à ce sujet, je continue à trouver la syntaxe suivante:

Label1.Dispatcher.Invoke(//same arguments; 

Ce dernier est-il meilleur? Pourquoi aurais-je choisi une méthode plutôt qu'une autre?

Répondre

6

J'utiliserais personnellement celui pour le contrôle lui-même, car alors vous n'avez pas besoin de vous inquiéter même sachant la fenêtre contenant.

Cependant, je ne m'attendrais pas à ce que ce soit important - au moins dans Win32 normal, tous les contrôles dans une seule fenêtre doivent être "possédés" par un seul thread d'interface utilisateur. Je m'attendrais à ce que cela se répercute également sur WPF. (Il y a des cas où cela ne s'applique pas, quand une fenêtre est réparée dans une autre, mais c'est plutôt rare.)

Questions connexes