0

J'utilise un thread BackgroundWorker pour travailler en dehors du thread graphique dans Silverlight 4. Je souhaite mettre à jour les widgets dans le contexte de l'interface graphique, mais j'ai lu les avertissements à ce sujet dans la documentation Microsoft. Je comprends que la communication d'un fil à l'autre jette une exception car seul le fil GUI peut mettre à jour des widgets, mais ne BeginInvoke prévu ceci:Comment appelez-vous le thread graphique dans Silverlight à partir de la méthode BackgroundWorker?

// BackgroundWorker thread code... 

Widget.Dispatcher.BeginInvoke(() => Status.Text = "Hello"); 

Cependant, je reçois des résultats imprévisibles dans mon code de travail.

Quelle est la bonne façon de communiquer de manière croisée avec le thread graphique? Est-ce en passant une collection de résultats à partir de la méthode RunWorkerCompleted?

Merci,

Scott

Répondre

1

Vous ne communiquez pas avec le code interface graphique utilisateur.

Vous devez déclencher et l'événement auquel le thread d'interface utilisateur souscrit. Il fait ensuite le marshalling nécessaire pour mettre à jour l'interface utilisateur en toute sécurité.

Il y a beaucoup de questions (et de réponses) à ce sujet. Voir certaines des questions "connexes" dans la barre de droite.

+0

Ah, merci Chris. Oui, les ressources sur le côté ont été utiles. –

Questions connexes