Async/Await easy retry in c#

Ali Alp - Aug 23 '20 - - Dev Community

In Asynchronous programming in some cases we need to retry a method if it fails. Easy-Retry can provide this functionality with ease :)

NuGet Installation

GitHub Source Code

.Net CLI
dotnet add package EasyRetry

Package Manager
Install-Package EasyRetry

Enter fullscreen mode Exit fullscreen mode

Usage

Let's say there is a HTTP Task which you need to retry in case it fails

private async Task Task_NetworkBound()
{
    await new HttpClient().GetStringAsync("https://dotnetfoundation.org");
}
Enter fullscreen mode Exit fullscreen mode

In order to retry it after 5 seconds you just need to do as follows

//With DI
await _easyRetry.Retry(async () => await Task_NetworkBound());

//Without DI
await new EasyRetry().Retry(async () => await Task_NetworkBound());
Enter fullscreen mode Exit fullscreen mode

Or you can use the retry options to customize the behavior of the retry algorithm as follows

await _easyRetry.Retry(async () => await Task_NetworkBound()
    , new RetryOptions()
    {
        Attempts = 3,
        DelayBetweenRetries = TimeSpan.FromSeconds(3),
        DelayBeforeFirstTry = TimeSpan.FromSeconds(2),
        EnableLogging = true,
        DoNotRetryOnTheseExceptionTypes = new List<Type>()
        {
            typeof(NullReferenceException)
        }
    });
Enter fullscreen mode Exit fullscreen mode

NuGet Installation

GitHub Source Code

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Terabox Video Player