2016-05-07 7 views
2

私はPollyをXamarinプロジェクトで使用しています。私が直面している問題は、2回の再試行後にメソッドを続行する必要がありますが、なんらかの理由でそれが固まって再試行を続けるということです。私はこれをどのようにすることができるか誰にも分かりますか?Xリトライ後にポリリーを続ける

private async Task<List<EventDto>> GetEventsErrorRemoteAsync() 
{ 
    List<EventDto> conferences = null; 

    if (CrossConnectivity.Current.IsConnected) 
    { 
     // Retrying a specific amount of times (5) 
     // In this case will wait for 
     // 1^2 = 2 seconds then 
     // 2^2 = 4 seconds then 
     // 3^2 = 8 seconds then 
     // 4^2 = 16 seconds then 
     // 5^2 = 32 seconds 
     conferences = await Policy 
      .Handle<Exception>() 
      .WaitAndRetryAsync(
       retryCount: 2, 
       sleepDurationProvider:retryAttempt => 
        TimeSpan.FromSeconds(Math.Pow (2, retryAttempt)), 
       onRetry: (exception, timeSpan, context) => 
       { 
        var ex = (ApiException)exception; 

        //Do something with exception. Send to insights (now hockeyapp) 
        Debug.WriteLine($"Error: {ex.ReasonPhrase} | 
         TimeSpan: {timeSpan.Seconds}"); 
        return; 
       }).ExecuteAsync(async() => 
        await _eventService.GetEventsWithError()); 
    } 
    return conferences; 
} 

答えて

1

同じGithubの問題について詳細に答え質問:https://github.com/App-vNext/Polly/issues/106

ポリシーが再試行を保っ立ち往生されていません。むしろ、.ExecuteAsync()の範囲内でデリゲートを実行する際に再試行ポリシーによって行われた最後の試行がスローされた場合、再試行ポリシーはこの最終的な例外を戻します。その例外をキャッチして処理していないので、このメソッドは自然にreturnステートメントを続行しません。

関連する問題