1、指数退避策略
Task.Delay方法:在指定时间结束后返回已完成的任务。
/// <summary>
/// 指数退避策略(可增加重试之间的延迟间隔)。当在Web服务中采用这种策略时,可避免服务器被重试淹没。
/// </summary>
/// <param name="client"></param>
/// <param name="url"></param>
/// <returns></returns>
async Task<string> DownloadStringWithRetries(HttpClient client, string url)
{
TimeSpan nextDelay = TimeSpan.FromSeconds(1);
for (int i = 0; i < 3; i++)
{
try
{
return await client.GetStringAsync(url);
}
catch (Exception ex)
{
}
await Task.Delay(nextDelay);//延时指定的时间
nextDelay = nextDelay + nextDelay;
}
return await client.GetStringA