Warum bieten die von Silerlight generierten WCF-Proxy-Klassen nur asynchrone Aufrufe an?
Es gibt Fälle, wo ich das asynchrone Muster nicht wirklich brauche (zum Beispiel in einem BackgroundWorker)
EDIT: Manchmal muss ich die Ergebnisse von zwei WCF-Aufrufen verarbeiten. Es wäre viel einfacher gewesen, wenn ich hätte warten können (das Geschäft der App erlaubt das) beide Anrufe zu beenden und dann zu verarbeiten .. aber noooo .... asynchron! : P
Es gibt tatsächlich einen technischen Grund, warum Sie keine Synchronisierungsaufrufe durchführen können, zumindest nicht aus dem Browser-Hauptthread. Das heißt, dass der Browser alle Plug-in-API-Aufrufe für denselben Thread aufruft, also wenn SL blockieren würde Wenn der Thread während des Wartens auf den Netzwerkrückruf nicht mit dem Netzwerkrückruf durchkam und die App festgefahren wurde. Das heißt, die Sync-API würde funktionieren, wenn sie von einem anderen Thread initiiert wird - dh, wenn die Anwendung zuerst ein QueueUserWorkItem ausführt, um den Browser-Thread zu verlassen - aber wir fanden es verwirrend, die Synchronisierungsoption anzubieten und nur zu haben arbeite die meiste Zeit.
Nach meinem Verständnis ist es das Ziel, es den Leuten schwer zu machen, das Falsche zu tun (Sync. IO von der Benutzeroberfläche). Wenn Sie die WCF-Klassen verwenden, müssen Sie wahrscheinlich damit leben.
Andrei, es gibt Methoden, die sogar die Verwendung des asynchronen Musters erlauben, expressiven Code zu schreiben, einfach zu lesen und zu verwalten, ohne dabei verrückt zu werden, wenn man 4 asynchrone Anfragen benötigt, indem man einfach die Art und Weise vereinfacht, wie man seinen Code schreibt. werfen Sie einen Blick auf diese Bibliothek Ссылка
Tags und Links wcf silverlight proxy asynchronous call