代码检查:可能错误使用了 'CancellationToken'
此检查会检测方法或函数使用来自外部上下文的 CancellationToken 而不是作为参数传递的 CancellationToken 的场景。
不正确的使用:
public void Bar(CancellationToken methodToken)
{
LocalFunction(methodToken);
// do something
void LocalFunction(CancellationToken localFuncToken)
{
Foo(methodToken); // Incorrect: should use 'localFuncToken'.
}
}
public void Foo(CancellationToken unused) => throw new Exception();
在这里, LocalFunction 声明了一个参数 CancellationToken localFuncToken ,但没有使用它,而是将外部的 methodToken 传递给 Foo ,这可能导致不一致的取消行为。
确保传递给方法或函数的令牌被一致地使用:
public void Bar(CancellationToken methodToken)
{
LocalFunction(methodToken);
// do something
void LocalFunction(CancellationToken localFuncToken)
{
Foo(localFuncToken); // Correct: respects the token passed to the function.
}
}
public void Foo(CancellationToken unused) => throw new Exception();
错误使用 CancellationToken 可能导致意外行为,例如无法取消操作或错误地取消。 此检查通过强制一致且正确地使用令牌,帮助防止这些微妙的错误。
最后修改日期: 2025年 9月 26日