Frage

Ich habe eine C # Desktop-Anwendung, und ich verbrauchen einen Web-Service ohne Probleme (wsdl hinzugefügt von „add Service Referenzen“, so dass ich ein Objekt erstellen und seine Funktionen aufrufen).

Jetzt will ich lange Abfragetechniken verwenden, aber ich kann nicht verstehen, wie diese Perspektive von dem Client zu tun.

Wie das Timeout konfigurieren? Soll ich einen Thread zu diesem gewidmet benutzen? Gibt es ein Beispiel für eine C # Desktop-Anwendung? (Nicht gefunden haben, überhaupt)

Danke, Dam

War es hilfreich?

Lösung

Es soll möglich sein, das Timeout auf dem Web-Service-Objekt zu konfigurieren - die Details hängen von genau welcher Klasse es verwenden, aber Blick auf WebClientProtocol.Timeout für ein Beispiel.

Nun könnte man entweder das von einem dedizierten Thread synchron aufrufen, oder Sie können eine machen asynchrone Aufruf der Web-Service mit zu beginnen, einen Rückruf Angabe zu ausgeführt werden (wahrscheinlich auf einem Thread-Pool-Thread ), wenn der Dienst antwortet. In diesem Fall können Sie finden Sie das Timeout auf dem asynchronen Aufruf angeben selbst. - wieder, wird es auf genau abhängen, welche Art von Web-Service-Proxy-Klasse Sie haben

Auf diese Weise brauchen Sie nicht zu „verschwenden“ ein Thread für die Antwort nur darauf warten - aber man kann feststellen, dass das asynchrone Programmiermodell härter ist als der synchron man zu verstehen. Wenn Sie nur eine oder zwei dieser Anforderungen zu jeder Zeit haben, ist die zusätzliche paar Fäden unwahrscheinlich ein Problem sein. Wenn Sie Antworten von 500 verschiedenen Dienste warten, das ist eine andere Sache und das Asynchron-Modell würde auf jeden Fall der Weg zu gehen.

Andere Tipps

Für Fragen Threading finden Jon Antwort.

Für das Timeout Problem, hier ist die Lösung: In vs 2008, als ich einen „Dienstverweis“ aus einer WSDL-Datei hinzufügen, wird es WCF standardmäßig verwenden, und ich kann nicht finden, wie ein Timeout-Wert mit ihm zu setzen.

Also, wenn Rechtsklick auf Service Referenzen, ich habe „Web-Referenzen“ (erweitert / Add Web-Referenz) zu wählen. Auf diese Weise wird es nur „normalen“ Web-Service und der Timeout-Parameter ist verfügbar verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top