3

说我创建一个任务

bool aBoolean = true;

Task.Factory.StartNew(() =>
    while(aBooloean)    {
       ...
    }
}

通过全局布尔值退出任务是否更好地退出任务?

还是使用 CancellationTokenSource 更好?

什么时候适合使用 CancellationTokenSource 结束任务?

当您使用 CancellationTokenSource 并使事物处于不一致状态时,它是否只是抛出异常?

谢谢

4

1 回答 1

3

拥有“全局”布尔值存在被优化或缓存到 CPU 缓存中的风险,您可能看不到值的变化。 CancellationTokenSource是取消 a 的推荐方法Task。Task 使用 Token 来测试是否请求取消并简单地从 Task 的 Action 委托返回。如果您不想,则无需抛出异常。

于 2012-08-14T04:45:16.943 回答