EasyRetry 2.0.1

dotnet add package EasyRetry --version 2.0.1                
NuGet\Install-Package EasyRetry -Version 2.0.1                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="EasyRetry" Version="2.0.1" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add EasyRetry --version 2.0.1                
#r "nuget: EasyRetry, 2.0.1"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install EasyRetry as a Cake Addin
#addin nuget:?package=EasyRetry&version=2.0.1

// Install EasyRetry as a Cake Tool
#tool nuget:?package=EasyRetry&version=2.0.1                

Async/Await easy retry in c#

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

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");
}

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());

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)
        }
    });
NuGet Installation
GitHub Source Code
Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp3.1 is compatible. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (3)

Showing the top 3 NuGet packages that depend on EasyRetry:

Package Downloads
AgentHub.Shared.TSCommonUtils

Package Description

EasyPipeLine

An easy implementation of chain of responsibility with builder pattern which will give a ready to use pipeline foundation

PipeNet

Simplify your complex flow into a well organize pipeline

GitHub repositories

This package is not used by any popular GitHub repositories.