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