using System.Threading.Tasks;
static readonly AsyncLocal<(int logicalId, int parentThreadId)> Context = new();
static string ContextAsString => $"Context: (logicalId: {Context.Value.logicalId}, parentThreadId {Context.Value.parentThreadId})";
Context.Value = (i, Thread.CurrentThread.ManagedThreadId);
Console.WriteLine($"[Original Thread] {ContextAsString}");
Console.WriteLine($"[Child Thread] ID: {Thread.CurrentThread.ManagedThreadId}, {ContextAsString}");
Console.WriteLine($"[Continuation Thread] ID: {Thread.CurrentThread.ManagedThreadId}, {ContextAsString}");