我在我的web应用程序上使用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);
}
}
}
}
对这种方法要非常谨慎,它不会“嵌套”。假设您有一个低级方法,在放弃之前重试五次操作。呼叫者在放弃之前重试五次。呼叫者在放弃之前重试五次。突然之间,你放弃之前实际上正在重试125。我们已经有了真实世界的情况,那些应该在一秒钟内返回错误代码的代码实际上坐在深度嵌套的重试中超过一周,似乎挂起了应用程序。快速失败并让用户决定何时重试通常会更好。 – 2009-06-26 16:31:16