2 回答
TA贡献1812条经验 获得超5个赞
我想你想要的是
public static T Execute<T>(Func<T> func) where T : Task
{
return Policy.Handle<HttpRequestException>()
.Or<TimeoutException>()
.WaitAndRetryAsync(
3,
retryAttempt => TimeSpan.FromSeconds(Math.Pow(5, retryAttempt)),
(exception, timeSpan, retryCount, context) =>
{
//do some logging
})
.ExecuteAsync(func).Wait();
}
在您的代码示例中,您调用func一次并返回它,然后在定义和调用策略之间,但不返回调用该策略的结果。
如果你想避免,Wait我想你也可以这样做
public static T Execute<T>(Func<T> func) where T : Task
{
return Policy.Handle<HttpRequestException>()
.Or<TimeoutException>()
.WaitAndRetryAsync(
3,
retryAttempt => TimeSpan.FromSeconds(Math.Pow(5, retryAttempt)),
(exception, timeSpan, retryCount, context) =>
{
//do some logging
})
.ExecuteAsync(async () => await func());
}
- 2 回答
- 0 关注
- 202 浏览
添加回答
举报