Den Silverlight Dispatcher verstehen

Ich hatte ein ungültiges Problem mit dem Cross-Thread-Zugriff, habe jedoch ein wenig nachgeforscht und es mithilfe des Dispatchers behoben.

Jetzt in meiner App habe ich Objekte mit verzögertem Laden. Ich würde einen Async-Aufruf mit WCF durchführen und wie üblich den Dispatcher verwenden, um meine Objekte DataContext zu aktualisieren, dies funktionierte jedoch in diesem Szenario nicht. Ich habe aber eine lösung gefundenHie. Folgendes verstehe ich nicht.

In meinem UserControl habe ich Code zum Aufrufen einesUmschalte Methode für mein Objekt. Der Aufruf dieser Methode erfolgt in einem Dispatcher wie diesem.

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

Wie ich bereits erwähnte, war dies nicht genug, um Silverlight zufrieden zu stellen. Ich musste @ machEin weitere Dispatcher-Aufruf in meinem Objekt. Mein Objekt ist KEIN UIElement, aber eine einfache Klasse, die das Laden / Speichern selbst erledigt.

So wurde das Problem durch Aufrufen von @ behob

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

in meiner Klasse.

Warum musste ich den Dispatcher zweimal anrufen, um dies zu erreichen? Sollte ein Anruf auf hoher Ebene nicht ausreichen? Gibt es einen Unterschied zwischen dem Deployment.Current.Dispatcher und der Dispatcher in einem UIElement?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage