Tag: 取消 令牌

CancellationTokenSource的行为不符合预期

在这种情况下预期的是,如果用户通过按Enter键取消任务,则ContinueWith挂钩的另一个任务将运行,但事实并非如此,因为尽管在ContinueWith显式处理显然不是,但仍然抛出了AggregateException被执行。 有关下面的任何说明吗? class Program { static void Main(string[] args) { CancellationTokenSource tokensource = new CancellationTokenSource(); CancellationToken token = tokensource.Token; Task task = Task.Run(() => { while (!token.IsCancellationRequested) { Console.Write(“*”); Thread.Sleep(1000); } }, token).ContinueWith((t) => { t.Exception.Handle((e) => true); Console.WriteLine(“You have canceled the task”); }, TaskContinuationOptions.OnlyOnCanceled); Console.WriteLine(“Press any key to cancel”); Console.ReadLine(); tokensource.Cancel(); task.Wait(); } }