PART 01 核心一句话总结
CancellationToken是业务侧统一的取消信号载体,Task/异步方法是执行载体; Token 负责传递「是否要取消」的信号,Task 内部会监听这个信号,收到后终止执行并抛出OperationCanceledException; 二者配合实现可控、安全的任务取消,替代危险的Thread.Abort()。
PART 02 基础对应关系拆解
CancellationTokenSource(CTS):控制器,主动发起取消;
CancellationToken(Token):只读信号令牌,传递给 Task/异步方法;
Task:承载异步/同步执行逻辑,内部接收 Token,响应取消;
Task.Run(..., token)、xxxAsync(token):内置对 Token 的支持。
底层绑定逻辑
创建CTS → 获取Token → 将Token传入Task; CTS调用Cancel()→ Token标记已取消 → Task在合适时机检测到信号,中断执行。
PART 03 两种 Task 场景下 Token 的工作机制
场景1:纯IO异步 Task(File/Http/数据库 xxxAsync)
Task 执行时将 Token 绑定到 IOCP 异步句柄;
调用cts.Cancel()后,操作系统直接中断硬件IO;
Task 立刻终止,抛出OperationCanceledException;
无线程阻塞,是最优取消方案。
using va