网站建设费用初步预算,网站建设外包必须注意几点,网站页面设计图片素材,贵州网站推广公司写在前面
在Task创建并执行后#xff0c;如果状态发生了变化#xff0c;需要取消正在执行中的Task#xff0c;除了使用主线程上的共享变量来判断之外#xff0c;更优雅的方式就是就是用CancellationTokenSource来取消任务的执行。
代码实现 public static void CancelTas…写在前面
在Task创建并执行后如果状态发生了变化需要取消正在执行中的Task除了使用主线程上的共享变量来判断之外更优雅的方式就是就是用CancellationTokenSource来取消任务的执行。
代码实现 public static void CancelTaskTest01(){var source new CancellationTokenSource();// 注册Task被取消后的处理方法source.Token.Register(() {Console.WriteLine(通知 task01 被取消了);});var counter 1;var task01 new Task(() {while (!source.IsCancellationRequested){Thread.Sleep(2000);Console.WriteLine($第{counter}次);}if (source.IsCancellationRequested){Console.WriteLine($第{counter}次真正结束);}});task01.Start();// 9秒后取消task01,由于第5次执行的时候已经通过了判断所以事实上是第6次才被取消source.CancelAfter(9000);}
执行结果