# C# 异步与取消检查清单

## async / await

- `async void` 是否仅用于事件处理；业务路径是否误用导致异常无法向上传播。
- 是否在无必要时阻塞异步 API（`.Result`、`.Wait()`、`GetAwaiter().GetResult()`），尤其在库或 ASP.NET 请求线程上。
- `ConfigureAwait(false)` 在库代码中的使用是否与调用方同步上下文假设一致（diff 可见时判断）。

## 取消与超时

- 长时间运行的异步操作是否接受并传播 `CancellationToken`；取消后是否正确收尾资源。
- 超时与取消是否区分语义，避免吞掉 `OperationCanceledException` 当普通失败。

## 死锁与并发误用

- 是否在同步方法中错误地等待未完成的同线程延续导致死锁风险。
