Task记录3 :ContinueWith ,CancellationToken,的结合
static void Main(string[] args) { //1.创建取消令牌数据 CancellationTokenSource tokenSource = new CancellationTokenSource(); //2.创建取消令牌 CancellationToken token = tokenSource.Token; Task.Run(() => { for (int i = 0; i < 20; i++) { Console.WriteLine(i); } //这里我们取消判断 如果这里不执行, 那么newTask肯定不会执行, 上文说newTask为新的Task }).ContinueWith(NewTask,token);
//3.注册取消委托 如果我们没有取消令牌 那么我们延续操作不会执行,如果我们存在,则第一个执行
token.Register((() => { Console.WriteLine("延续操作"); }));
tokenSource.Cancel();//取消令牌 Console.ReadLine(); } private static void NewTask(Task T) { Console.WriteLine("上一个Task执行完毕,现在执行newTask"); } }
用处:一样 就是我们是否取消,根据取消状态来执行不同的任务