<PackageReference Include="Polly.Core" Version="8.4.2" />

ResilienceContextPool

public abstract class ResilienceContextPool
The pool of ResilienceContext instances.
using Polly.Utils; using System.Runtime.CompilerServices; using System.Threading; namespace Polly { [System.Runtime.CompilerServices.NullableContext(1)] [System.Runtime.CompilerServices.Nullable(0)] public abstract class ResilienceContextPool { [System.Runtime.CompilerServices.Nullable(0)] private sealed class SharedPool : ResilienceContextPool { private readonly ObjectPool<ResilienceContext> _pool = new ObjectPool<ResilienceContext>(() => new ResilienceContext(), (ResilienceContext c) => c.Reset()); public override ResilienceContext Get(ResilienceContextCreationArguments arguments) { ResilienceContext resilienceContext = _pool.Get(); resilienceContext.OperationKey = arguments.OperationKey; resilienceContext.CancellationToken = arguments.CancellationToken; resilienceContext.ContinueOnCapturedContext = arguments.ContinueOnCapturedContext.GetValueOrDefault(); return resilienceContext; } public override void Return(ResilienceContext context) { _pool.Return(Guard.NotNull(context, "context")); } } private const bool ContinueOnCapturedContextDefault = false; public static ResilienceContextPool Shared { get; } = new SharedPool(); public ResilienceContext Get(CancellationToken cancellationToken = default(CancellationToken)) { return Get(null, cancellationToken); } public ResilienceContext Get([System.Runtime.CompilerServices.Nullable(2)] string operationKey, CancellationToken cancellationToken = default(CancellationToken)) { return Get(operationKey, null, cancellationToken); } public ResilienceContext Get([System.Runtime.CompilerServices.Nullable(2)] string operationKey, bool? continueOnCapturedContext, CancellationToken cancellationToken = default(CancellationToken)) { return Get(new ResilienceContextCreationArguments(operationKey, continueOnCapturedContext, cancellationToken)); } public ResilienceContext Get(bool continueOnCapturedContext, CancellationToken cancellationToken = default(CancellationToken)) { return Get(new ResilienceContextCreationArguments(null, continueOnCapturedContext, cancellationToken)); } public abstract ResilienceContext Get(ResilienceContextCreationArguments arguments); public abstract void Return(ResilienceContext context); } }