我尝试运行一个简单的示例来取消如下所示的任务
CancellationTokenSource tokenSource2 = new CancellationTokenSource();
CancellationToken token2 = tokenSource2.Token;
Task task2 = new Task(() =>
{
for (int i = 0; i < int.MaxValue; i++)
{
token2.ThrowIfCancellationRequested();
Thread.Sleep(100);
Console.WriteLine("Task 2 - Int value {0}", i);
}
}, token2);
task2.Start();
Console.WriteLine("Press any key to cancel the task");
Console.ReadLine();
tokenSource2.Cancel();
Console.WriteLine("Task 2 cancelled? {0}", task2.IsCanceled);
我预计 Console.WriteLine("Task 2 cancelled? {0}", task2.IsCanceled);
会打印**"Task 2 cancelled? True"**
,但它打印了"False"。
你可知道发生了什么?这是预期的行为吗?谢谢。
编辑:确保在调用取消请求之前任务尚未完成。我添加了Console.ReadLine()
.