using System.Threading.Tasks;
static async Task Main(string[] args)
var cts = new CancellationTokenSource(TimeSpan.FromSeconds(5));
var task = SaySomethingAsync(10);
await task.WaitAsync(cts.Token);
if (task.IsCompletedSuccessfully)
Console.WriteLine(task.Result);
catch (OperationCanceledException ex)
Console.WriteLine("Operation cancelled.");
static Task<string> SaySomethingAsync(int secondsDelay)
while (iterations != secondsDelay)
Console.WriteLine($"....{iterations}");
Thread.Sleep(TimeSpan.FromSeconds(1));