Wie wiederhole ich n mal im Falle einer Ausnahme in C #?

8

Ich entwickle eine WPF 4.0-Anwendung, in der wir die Daten von einem Remote-Webdienst erhalten. Der Webservice stellt seinen Kunden mehr als 120 Methoden zur Verfügung. Wenn ein Web-Service-Aufruf von meiner WPF-Anwendung fehlschlägt, muss ich es n mal wiederholen, was über App.Config konfigurierbar ist. Wie implementiert man das? Gibt es Entwurfsmuster, die dieses Problem angehen?

    
funwithcoding 31.01.2011, 16:01
quelle

7 Antworten

6
%Vor%     
Itay Karo 31.01.2011, 16:06
quelle
3

Ich habe diesen Code vor nicht allzu langer Zeit geschrieben, um etwas Ähnliches zu tun, was Sie wollen. Es kann an Ihre Bedürfnisse angepasst werden. Es ist eine generische Wartemethode. Übergeben Sie eine Funktion und wenn das erwartete Ergebnis nicht zurückgegeben wird, warten Sie, versuchen Sie es erneut und beenden Sie es nach X Versuchen.

%Vor%     
Dustin Davis 31.01.2011 16:03
quelle
1
%Vor%

Sicher nichts Besonderes, aber es wird den Job erledigen. Das Hauptmuster, das bei so ziemlich jeder Implementierung üblich ist, ist ein Schleifenkonstrukt, das einen Try-Catch enthält und etwas davon kontrolliert; Dies kann entweder ein rekursiver Aufruf oder eine iterative Schleife sein, z. B. die obige while-Schleife. Stellen Sie sicher, dass Sie die Schleife nach einem erfolgreichen Versuch ordnungsgemäß beenden, und verfolgen Sie Wiederholungen; Wenn Sie dies nicht tun, wird eine Endlosschleife ausgelöst.

    
KeithS 31.01.2011 16:05
quelle
0
%Vor%     
SiN 31.01.2011 16:08
quelle
0

Hier ist ein ähnlicher Code, der IO-Freigaben verletzt. Es ist die gleiche Idee: Wir haben eine Delegate und eine statische Wrapper-Methode:

%Vor%

Und dann nennen wir es so (Lambda-Ausdruck passt perfekt hier):

%Vor%     
Simon Mourier 31.01.2011 16:08
quelle
0

Sie können dies möglicherweise mit einem GOTO (keuchen)

tun %Vor%

Ich bin mir sicher, dass es einen besseren Weg geben könnte, aber das könnte tun, was Sie brauchen.

    
Matt 31.01.2011 16:11
quelle
0

Sie können dafür einen funktionalen Ansatz verwenden:

%Vor%

Sie können dies verwenden, um bestimmte Ausnahmen abzufangen (fügen Sie bei Bedarf weitere generische TException-Parameter hinzu).

    
Mark Rendle 31.01.2011 17:47
quelle

Tags und Links