Ich verwende einen XML-Webdienst in meiner Webanwendung, und manchmal antwortet der Remoteserver nicht rechtzeitig. Ich kam auf die Idee einer erneuten Anfrage, wenn der erste Versuch fehlschlägt. Um eine Schleife zu vermeiden, möchte ich die gleichzeitige Anfrage auf 2 beschränken. Ich möchte eine Meinung erhalten, wenn das, was ich unten getan habe, in Ordnung ist und funktionieren würde, wie ich es erwarte.Wiederholen Sie die Anforderung, wenn die erste fehlgeschlagen ist
public class ScEngine
{
private int _attemptcount = 0;
public int attemptcount
{
get
{
return _attemptcount;
}
set
{
_attemptcount = value;
}
}
public DataSet GetStat(string q, string job)
{
try
{
//snip....
attemptcount += attemptcount;
return ds;
}
catch
{
if (attemptcount>=2)
{
return null;
}
else
{
return GetStat(q, job);
}
}
}
}
Seien Sie sehr, sehr vorsichtig mit diesem Ansatz; Es nistet nicht gut. Angenommen, Sie haben eine Low-Level-Methode, die einen Vorgang fünf Mal wiederholt, bevor er aufgibt. Der Anrufer versucht es fünf Mal, bevor er aufgibt. Und sein Anrufer versucht es fünf Mal, bevor er aufgibt. Plötzlich wiederholst du tatsächlich 125, bevor du aufgibst. Wir hatten reale Situationen, in denen Code, der einen Fehlercode in weniger als einer Sekunde hätte zurückgeben müssen, tatsächlich in tief verschachtelten Wiederholungen für über eine Woche saß und die Anwendung zu hängen schien. Es ist normalerweise besser, schnell zu versagen und den Benutzer entscheiden zu lassen, wann er es erneut versuchen soll. –