当两者都可用时,我应该使用来自令牌或源的IsCancellationRequested吗?

Cal*_*her 10 c# .net-4.0 task-parallel-library

如果我在检查取消时仍有一个仍在范围内的CancellationTokenSource - 例如,如果我刚刚进行了数据库查询并且尚未将CancellationToken传递给Tasks以处理结果 - 我是否应该访问IsCancellationRequested来自源或其令牌?

换句话说,如果两个选项都可用,这是首选,为什么?

1:

myCancellationTokenSource.IsCancellationRequested
Run Code Online (Sandbox Code Playgroud)

2:

myCancellationTokenSource.Token.IsCancellationRequested
Run Code Online (Sandbox Code Playgroud)

Dan*_*ant 6

在这种特殊情况下,我认为两者基本相同.我更喜欢使用Token,因为如果您稍后将创建取消源的逻辑中的逻辑检查取消分开,则会简化重构.为了进一步,我会将令牌存储在本地引用中并使用该引用进行检查.