La compréhension de l'Silverlight Répartiteur

J'ai eu un Invalide de la Croix-Thread problème d'accès, mais un peu de recherche et j'ai réussi à le résoudre en utilisant le Répartiteur.

Maintenant, dans mon application j'ai des objets avec un chargement différé. Je voudrais faire un appel Asynchrone en utilisant WCF et comme d'habitude j'ai utiliser le Répartiteur de mettre à jour mes objets DataContext, mais il ne fonctionne pas pour ce scénario. J'ai cependant trouvé une solution ici. Voici ce que je ne comprends pas.

Dans mon UserControl j'ai le code pour appeler un Bascule méthode sur mon objet. L'appel de cette méthode est à l'intérieur d'un Répartiteur comme si.

Dispatcher.BeginInvoke( () => _CurrentPin.ToggleInfoPanel() );

Comme je l'ai mentionné avant, ce n'était pas suffisant pour satisfaire Silverlight. J'ai eu à faire un autre Répartiteur d'appel à l'intérieur de mon objet. Mon objet est PAS UIElement, mais d'une simple classe qui gère l'ensemble de son propre chargement/sauvegarde.

De sorte que le problème a été résolu en appelant

Deployment.Current.Dispatcher.BeginInvoke( () => dataContext.Detail = detail );

au sein de ma classe.

Pourquoi dois-je appeler le Répartiteur à deux reprises pour atteindre cette? Ne faut-il pas de haut niveau de l'appel suffit? Est-il une différence entre le de Déploiement.Actuel.Répartiteur et le Dispatcher dans un UIElement?

  • Je ne pense pas que vous avez fourni assez de code. Je soupçonne quelque chose que vous faites est de tirer un appel du réseau, qui est de retour dans un thread d'arrière-plan, d'où les deux invoque?
InformationsquelleAutor Matt | 2010-04-05