CSharp · Console
using System;
using System.Threading;
using System.Threading.Tasks;
public static class Program
{
public static async Task Main()
{
var cts = new CancellationTokenSource();
Print("1");
var task = Task.Run(async () =>
{
Print("2");
try { await Task.Delay(Timeout.Infinite, cts.Token); }
catch (OperationCanceledException) { }
Print("4");
Thread.Sleep(1000);
Print("5");
});
Thread.Sleep(1000);
Print("3");
cts.Cancel();
Print("6");
await task;
static void Print(object value)
{
Console.WriteLine($@"{DateTime.Now:HH:mm:ss.fff} [{Thread.CurrentThread
.ManagedThreadId}] > {value}");
}
}
}