ウェブアプリケーションでxml Webサービスを使用しています。私は、最初の試行が失敗した場合に再リクエストという考えを思いつきました。ループを防ぐために、私は同時リクエストを2に制限したいと思っています。私が下で行ったことが大丈夫で、私が期待している通りに動いたら、意見を出したいと思います。最初のリクエストが失敗した場合は、リクエストを再試行してください。
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);
}
}
}
}
このアプローチでは非常に注意してください。それはうまく "巣立つ"わけではありません。あきらめる前に5回操作を再試行する低レベルメソッドがあるとします。その呼び出し元は、あきらめる前に5回再試行します。そしてその呼び出し元は5回再試行して、あきらめる。突然、あなたはあきらめる前に実際に再試行しています。実際の状況では、2秒以内にエラーコードを返すべきコードが、アプリケーションをハングアップしているような、1週間以上にわたって深くネストされた再試行でそこに座っていました。通常は失敗して再試行するかどうかをユーザーに決定させる方がよいでしょう。 –