尝试在异常后重新加载XML

时间:2013-01-29 15:36:26

标签: c# xml try-catch linq-to-xml

我在一个常量循环中访问web服务但是在几次请求之后服务器返回503错误,我认为这可能是由重复的equest数量造成的。 (你会同意我的意见吗?)

我想做的是,根据以下链接问题,创建一个重试功能,尝试加载xml几次,每次尝试等待几秒钟。

"C# cleanest way to write retry logic?"

foreach (var item in ListofItems){
XDocument.Load(URL) //this returns 
.... //handle xml data
}

上面的代码可能会返回描述的异常(503),我想重新定义在我链接到这篇文章的问题中定义为答案的扩展方法。

如果成功完成它应该从请求返回XmlDocument结果。

这是我的尝试。

static XDocument RetryXMLLoadAction(Action action, int numRetries, int retryTimeout)
        {
            if (action == null)
                throw new ArgumentNullException("action"); // slightly safer...

            do
            {
                try { XDocument result = action(); return result; }
                catch
                {
                    if (numRetries <= 0) throw;  // improved to avoid silent failure
                    else Thread.Sleep(retryTimeout);
                }
            } while (numRetries-- > 0);
        }

0 个答案:

没有答案