| File: Runtime\TimeProviderCancellation.cs | Web Access |
| Project: src\src\Aspire.Hosting.Native.Core\Aspire.Hosting.Native.Core.csproj (Aspire.Hosting.Native.Core) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. namespace Aspire.Hosting.Native.Runtime; /// <summary>Owns a provider-backed timeout and its optional parent cancellation link.</summary> internal sealed class TimeProviderCancellation : IDisposable { private readonly CancellationTokenSource _timeout; private readonly CancellationTokenSource _linked; public TimeProviderCancellation(TimeSpan delay, TimeProvider timeProvider, CancellationToken cancellationToken) { _timeout = new CancellationTokenSource(delay, timeProvider); _linked = CancellationTokenSource.CreateLinkedTokenSource(_timeout.Token, cancellationToken); } public CancellationToken Token => _linked.Token; public bool IsCancellationRequested => _linked.IsCancellationRequested; public Task CancelAsync() => _linked.CancelAsync(); public void StopTimeout() => _timeout.Dispose(); public void Dispose() { _linked.Dispose(); _timeout.Dispose(); } }