ErrorComponents 1.0.2
dotnet add package ErrorComponents --version 1.0.2
NuGet\Install-Package ErrorComponents -Version 1.0.2
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="ErrorComponents" Version="1.0.2" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add ErrorComponents --version 1.0.2
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: ErrorComponents, 1.0.2"
#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 ErrorComponents as a Cake Addin #addin nuget:?package=ErrorComponents&version=1.0.2 // Install ErrorComponents as a Cake Tool #tool nuget:?package=ErrorComponents&version=1.0.2
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
ErrorComponents
The ErrorComponents
library is a set of fault tolerant wrapper classes around Action, Action<T>, Func<TResult>, Func<T, TResult>...
The wrapper classes offer a retry mechanism in case of an exception. Retry interval can be set to be linear or exponential.
It contains the following wrapper classes:
FaultTolerantAction
FaultTolerantAction<T>
FaultTolerantAction<T1, T2>
FaultTolerantFunc<TResult>
FaultTolerantFunc<T, TResult>
Usage
int invocationCounter = 0;
var sw = new Stopwatch();
// This action will fail with an exception:
var error = new Action(() =>
{
invocationCounter++;
Console.WriteLine("Invocation " + invocationCounter);
throw new NotImplementedException();
});
// Initialize a wrapper class, which will try to invoke the
// action 5 times before giving up. The default delay
// between invocations is one second:
var retry = new FaultTolerantAction(error, 5);
sw.Start();
var success = retry.Invoke();
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds);
// Initialize a wrapper class, which will try to invoke the
// action 5 times before giving up. The default delay
// between invocations increases exponentially:
var retry2 = new FaultTolerantAction(error, 5, new ExponentialRetryStrategy(1000));
sw.Start();
retry2.Invoke();
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds);
// Initialize a wrapper class, which will try to invoke the
// action 5 times before giving up, when the exception message
ends with 1 or 2:
var retry3 = new FaultTolerantAction(error, 5)
.Filter(e => e.Message.EndsWith("1") || e.Message.EndsWith("2"));
sw.Start();
retry3.Invoke();
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds);
More examples can be found on Github
Product | Versions 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 | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
.NETStandard 2.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.