C#面试题更新 2026-08-05

请解释 C# 中 CancellationToken 在异步操作取消机制中的作用,并说明如何通过它实现取消。

编码实现技术原理C#

考察说明

考查候选人对 C# 异步取消机制的理解与应用能力。

回答思路

  1. 【回答框架 1】CancellationToken 是 C# 中用于协作式取消的结构体,通过检查 IsCancellationRequested 属性或注册回调来响应取消请求,不强制中断线程。
  2. 【回答框架 2】使用 CancellationTokenSource 创建令牌,调用其 Cancel 方法触发取消,通过构造函数或方法参数将令牌传递给异步操作。
  3. 【回答框架 3】在异步方法中,通过 ThrowIfCancellationRequested 抛出 OperationCanceledException,或在循环中检查 IsCancellationRequested 来提前退出。
  4. 【回答框架 4】CancellationToken 支持注册回调(Register 方法),用于释放资源或执行清理。确保在 finally 中释放相关资源,或使用 using 管理 CancellationTokenSource。
  5. 【关键点 1】CancellationToken 实现协作式取消,不强制中断。
  6. 【关键点 2】通过 CancellationTokenSource.Cancel 触发取消。
  7. 【关键点 3】在异步方法中检查令牌并抛异常或提前返回。
  8. 【关键点 4】注册回调处理清理工作。
  9. 【易错点 1】传递同一个令牌给多个操作时,取消会影响所有操作。
  10. 【易错点 2】忘记注册回调可能导致资源泄漏。
  11. 【易错点 3】不检查令牌直接执行可能无法及时响应取消。