J'ai rencontré un problème d'accès Croix-Thread incorrect, mais j'ai effectué quelques recherches et j'ai réussi à le résoudre en utilisant Dispatcher.Présentation du répartiteur Silverlight
Maintenant dans mon application, j'ai des objets avec chargement paresseux. Je ferais un appel asynchrone en utilisant WCF et comme d'habitude j'utilise le Dispatcher pour mettre à jour mes objets DataContext, mais cela n'a pas fonctionné pour ce scénario. J'ai cependant trouvé une solution here. Voici ce que je ne comprends pas.
Dans mon UserControl j'ai le code pour appeler une méthode Toggle sur mon objet. L'appel à cette méthode est dans un Dispatcher comme ça.
Dispatcher.BeginInvoke(() => _CurrentPin.ToggleInfoPanel());
Comme je l'ai mentionné auparavant, cela ne suffisait pas à satisfaire Silverlight. J'ai dû faire un autre appel Dispatcher dans mon objet. Mon objet est PAS un UIElement, mais une classe simple qui gère tout son propre chargement/sauvegarde.
Ainsi, le problème a été résolu en appelant
Deployment.Current.Dispatcher.BeginInvoke(() => dataContext.Detail = detail);
au sein de ma classe.
Pourquoi ai-je dû appeler deux fois le Dispatcher pour y parvenir? Un appel de haut niveau ne devrait-il pas suffire? Y a-t-il une différence entre le Deployment.Current.Dispatcher et le Dispatcher dans un UIElement?
Je ne pense pas que vous avez fourni assez de code. Je soupçonne que quelque chose que vous faites lance un appel réseau, qui revient sur un fil de fond, d'où les deux invoque? –