2015-10-05 79 views
0

我使用Polly來發出HTTP請求,如果請求失敗,則重試5次嘗試。指定放棄/失敗操作

當5次嘗試失敗並且策略放棄時,是否可以指定一個操作?

在下面的代碼中;當我們5次失敗時,我知道用戶沒有互聯網,所以我想顯示一個消息框,說'應用程序需要互聯網'。我可以使用計數器來計算5次失敗,但使用Polly方法會更好。

var policy = Polly.Policy.Handle<Exception>().WaitAndRetryAsync(
    5, 
    retryAttempt => TimeSpan.FromSeconds(Math.Pow(2, retryAttempt)), 
    (ex, span) => 
    { 
     Mvx.Trace("Retried because of {0}", ex); 
    } 
); 

await policy.ExecuteAsync(() => MakeRequestEx<T>(requestUrl, verb, accept, headers, baseAddress)).ConfigureAwait(false); 

回答

1

是的,你可以使用ExecuteAndCapture

var policyResult = await policy.ExecuteAndCaptureAsync(
    () => MakeRequestEx<T>(requestUrl, verb, accept, headers, baseAddress) 
).ConfigureAwait(false); 

然後,您可以檢查policyResultOutcome,查看呼叫是否失敗,並顯示一條消息。

有關更多信息,請參閱​​。