Wie kann eine Methode im Benutzeroberflächenthread innerhalb eines Worker-Threads aufgerufen werden? [Duplikat]

10

Ich arbeite an einem Projekt, das die folgenden Technologien verwendet:

  • C # (.NET 4.0)
  • WCF
  • PRISM 4

Ich führe gerade einen asynchronen Aufruf zu einem unserer Web Services mit den von einem Proxy generierten Begin / End-Methoden durch. Der Aufruf ist erfolgreich und der Client kann die Antwort des Web-Service auf einem Arbeitsthread empfangen.

Sobald die Antwort eingegangen ist, fahre ich fort, ein Ereignis auszulösen. Die für das Ereignis abonnierte Klasse fordert eine UI-Navigation mit PRISM an:

%Vor%

Da die asynchrone WCF-Antwort nicht im UI-Thread erfasst wird, muss ich den UI-Thread mit Application.Current.Dispatcher.BeginInvoke(...) aufrufen.

Das Problem hier ist, dass der Aufruf nichts zu tun scheint. Die Benutzeroberfläche wird nicht aktualisiert, und es wird keine Ausnahme ausgelöst.

Wie soll ich den Benutzeroberflächenthread innerhalb eines Ereignisses aufrufen, das in einem Arbeitsthread ausgelöst wird?

Bearbeiten: Diese Frage wurde unter dem folgenden Link erneut gestellt, da das angenommene Duplikat keine Antwort liefert:

UI-Navigation mit PRISM anfordern 4 in einem asynchronen WCF-Antwort-Thread

    
Hussein Khalil 20.12.2011, 15:33
quelle

1 Antwort

5

Sie müssen sicherstellen, dass Sie auf der tatsächlichen Benutzeroberfläche Dispatcher aufrufen, nicht unbedingt die Current . Sie könnten versuchen, die Benutzeroberfläche Dispatcher zu übergeben oder eine Art Callback zu verwenden, das von der Benutzeroberfläche irgendwo gehandhabt wird.

    
Samuel Slade 20.12.2011, 15:36
quelle

Tags und Links