<PackageReference Include="Polly.Core" Version="8.0.0-alpha.8" />

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([System.Runtime.CompilerServices.Nullable(2)] string operationKey, CancellationToken cancellationToken = default(CancellationToken)) { ResilienceContext resilienceContext = _pool.Get(); resilienceContext.OperationKey = operationKey; resilienceContext.CancellationToken = cancellationToken; return resilienceContext; } public override void Return(ResilienceContext context) { _pool.Return(Guard.NotNull(context, "context")); } } public static ResilienceContextPool Shared { get; } = new SharedPool(); public ResilienceContext Get(CancellationToken cancellationToken = default(CancellationToken)) { return Get(null, cancellationToken); } public abstract ResilienceContext Get([System.Runtime.CompilerServices.Nullable(2)] string operationKey, CancellationToken cancellationToken = default(CancellationToken)); public abstract void Return(ResilienceContext context); } }