using System.Threading.Tasks;
static async Task Main(string[] args)
var cts = new CancellationTokenSource();
cts.CancelAfter(TimeSpan.FromSeconds(5));
await RequestUtrnAsync(10, cts.Token).WaitAsync(cts.Token);
catch (OperationCanceledException ex)
Console.WriteLine("Operation cancelled.");
static Task RequestUtrnAsync(int secondsDelay, CancellationToken cancellationToken)
var cts = new CancellationTokenSource();
var linkedCts = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken, cts.Token);
while (iterations != secondsDelay)
Console.WriteLine($"....{iterations}");
Thread.Sleep(TimeSpan.FromSeconds(1));
linkedCts.Token.ThrowIfCancellationRequested();