how do i exit from thread
static void Main(string[] args) { var tokenSource1 = new CancellationTokenSource(); var token1 = tokenSource1.Token; var tokenSource2 = new CancellationTokenSource(); var token2 = tokenSource2.Token; var linkedTokenSource = CancellationTokenSource.CreateLinkedTokenSource(token1, token2); tokenSource1.Cancel(); // adding actions on cancel token1.Register(() => Console.WriteLine("canceled1")); token1.Register(() => Console.WriteLine("canceled2")); ThreadPool.QueueUserWorkItem(o => ThreadWorker(token1, 1000)); Console.WriteLine("Press <Enter> to cancel the operation."); Console.ReadLine(); tokenSource1.Cancel(); } private static void ThreadWorker(CancellationToken ct, Int32 count) { for (int i = 0; i < count; i++) { if (ct.IsCancellationRequested) break; Thread.Sleep(1000); Console.WriteLine("hi from the thread the count is " + i);
Linked cancellation token – if any token will be canceled, linked token will be cancelled too
var tokenSource1 = new CancellationTokenSource(); var token1 = tokenSource1.Token; var tokenSource2 = new CancellationTokenSource(); var token2 = tokenSource2.Token; var linkedTokenSource = CancellationTokenSource.CreateLinkedTokenSource(token1, token2); tokenSource1.Cancel();
Cancellation token can also be created with timespan to cancel
public CancellationTokenSource(TimeSpan delay)