我在我的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