namespace CancellationStudy { internal class CancellationDemo { public static void Main() { System.Threading.CancellationTokenSource cts =
new CancellationTokenSource(); //将CancellationToken传递给相应的操作 ThreadPool.QueueUserWorkItem(o => Count(cts.Token, 1000)); ThreadPool.QueueUserWorkItem(o => Count2(cts.Token, 1000));
Console.WriteLine("Please <Enter> to cancel the operation."); Console.ReadLine(); cts.Cancel(); Console.ReadLine(); }
private static void Count(CancellationToken token, int countTo) { for (int count = 0; count < countTo; count++) { //这个IsCancellationRequested是CancellationToken的属性 //主要用于显示对于当前的token,取消是否执行 if (token.IsCancellationRequested) { Console.WriteLine("Count is cancelled"); break; } Console.WriteLine(count); Thread.Sleep(200); } Console.WriteLine("count is done"); }
private static void Count2(CancellationToken token, int countTo) { for (int count = 0; count < countTo; count++) { if (token.IsCancellationRequested) { Console.WriteLine("Count2 is cancelled"); break; } Console.WriteLine(count); Thread.Sleep(200); } Console.WriteLine("count2 is done"); } } }