说我创建了一个任务
bool aBoolean = true;
Task.Factory.StartNew(() =>
while(aBooloean) {
...
}
}
通过使用全局布尔值退出任务退出任务是否更好?
或者使用CancellationTokenSource更好吗?
何时使用CancellationTokenSource结束任务?
当你使用CancellationTokenSource并将事情保持在一个不一致的状态时它会抛出异常吗?
由于
答案 0 :(得分:3)
拥有“全局”布尔值会冒被优化或缓存到CPU缓存中的风险,您可能看不到值的变化。 CancellationTokenSource
是用于取消Task
的推荐方法。任务使用令牌来测试是否请求取消,并且只是从Task的Action委托返回。如果你不想,不需要抛出异常。