# TaskGroup::Cancel 取消任务组中的未完成任务。 ```cpp void Cancel(); ``` ## 行为说明 当前实现会: 1. 加锁。 2. 把 `m_canceled` 设为 `true`。 3. 遍历 `m_tasks`。 4. 对每个 `task != nullptr` 且 `completed == false` 的节点调用 `task->OnCancel()`。 ## 返回值 - 无。 ## 当前实现限制 - 当前不会把任务状态改成 `TaskStatus::Canceled`。 - 当前不会减少 `m_pendingCount`,因此也不会让 [Wait](Wait.md) / [IsComplete](IsComplete.md) 表现为“任务组结束了”。 - 当前不会通知条件变量。 - 当前不会释放任务对象。 - `OnCancel()` 是在任务组内部锁保护下调用的;如果回调里再次操作同一个 `TaskGroup`,可能引入重入问题。 ## 设计说明 真正可用的取消语义通常至少要覆盖三件事: - 阻止尚未开始的任务继续进入执行。 - 让等待方得到确定的结束信号。 - 让任务对象生命周期仍然可控。 当前实现只覆盖了“通知任务自己被取消”这一层。 ## 相关文档 - [返回类型总览](TaskGroup.md) - [Wait](Wait.md) - [ITask::OnCancel](../Task/OnCancel.md)