<PackageReference Include="Microsoft.Extensions.Primitives" Version="10.0.0-rc.1.25451.107" />

CancellationChangeToken

A IChangeToken implementation using CancellationToken.
using Microsoft.Extensions.Internal; using System; using System.Diagnostics; using System.Runtime.CompilerServices; using System.Threading; namespace Microsoft.Extensions.Primitives { [DebuggerDisplay("HasChanged = {HasChanged}")] public class CancellationChangeToken : IChangeToken { public bool ActiveChangeCallbacks { get; set; } = true; public bool HasChanged => Token.IsCancellationRequested; private CancellationToken Token { get; } public CancellationChangeToken(CancellationToken cancellationToken) { Token = cancellationToken; } [NullableContext(1)] public IDisposable RegisterChangeCallback([Nullable(new byte[] { 1, 2 })] Action<object> callback, [Nullable(2)] object state) { return ChangeCallbackRegistrar.UnsafeRegisterChangeCallback(callback, state, Token, delegate(CancellationChangeToken s) { s.ActiveChangeCallbacks = false; }, this); } } }