CancellationTokenSource vs手动结束任务

时间:2012-08-14 04:24:07

标签: task cancellationtokensource

说我创建了一个任务

bool aBoolean = true;

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

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

或者使用CancellationTokenSource更好吗?

何时使用CancellationTokenSource结束任务?

当你使用CancellationTokenSource并将事情保持在一个不一致的状态时它会抛出异常吗?

由于

1 个答案:

答案 0 :(得分:3)

拥有“全局”布尔值会冒被优化或缓存到CPU缓存中的风险,您可能看不到值的变化。 CancellationTokenSource是用于取消Task推荐方法。任务使用令牌来测试是否请求取消,并且只是从Task的Action委托返回。如果你不想,不需要抛出异常。