gpt4 book ai didi

c# - 在 WaitAndRetryAsync 中输入 Catch 方法

转载 作者:行者123 更新时间:2023-12-04 07:57:54 25 4
gpt4 key购买 nike

目标:
如果您已经尝试了第三次并且没有成功。然后你想使用另一种方法。
我想阻止显示错误消息网页。
问题:
是否可以输入与 WaitAndRetryAsync 中的 catch 方法类似的方法?

RetryPolicy<HttpResponseMesssage> httpWaitAndRetryPolicy = Policy
.HandleResult<HttpResponseMessage>(r => !r.IsSuccessStatusCode)
.WaitAndRetryAsync
(3, retryAttempt => TimeSpan.FromSeconds(Math.Pow(2. retryAttempt)/2));
谢谢!

最佳答案

您可以使用 ExecuteAsync在您的政策上,然后使用 ContinueWith像这样处理最终响应:

 RetryPolicy<HttpResponseMessage>
.Handle<HttpRequestException>()
.Or<TaskCanceledException>()
.WaitAndRetryAsync
(3, retryAttempt => TimeSpan.FromSeconds(Math.Pow(2, retryAttempt) / 2))
.ExecuteAsync(() =>
{
//do stuff that you want retry

}).ContinueWith(x =>
{
if (x.Exception != null)
{
//means exception raised during execute and handle it
}

// return your HttpResponseMessage
}, scheduler: TaskScheduler.Default);
遵循@TheodorZoulias 的评论最佳使用实践 ContinueWith是显式设置 TaskScheduler默认,因为 ContinueWith将调度程序更改为 Current并可能导致僵局。

关于c# - 在 WaitAndRetryAsync 中输入 Catch 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66611050/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com