JetBrains Rider 2026.1 Help

代码检查:异步迭代器包含一个或多个类型为 'CancellationToken' 的参数,但这些参数都没有标注 'EnumeratorCancellation' 特性。

此检查报告一个异步迭代器方法包含 CancellationToken 参数,但没有用 [EnumeratorCancellation] 标记任何此类参数。 没有该特性时,由 await foreach 通过 GetAsyncEnumerator(...) 传递的取消标记不会转发到你可能想要用的迭代器参数。

示例

using System.Collections.Generic; using System.Threading; class C { public async IAsyncEnumerable<int> M(CancellationToken token) { yield return 0; } }
using System.Collections.Generic; using System.Runtime.CompilerServices; using System.Threading; class C { public async IAsyncEnumerable<int> M([EnumeratorCancellation] CancellationToken token) { yield return 0; } }

快速修复

快速修复会为所选 CancellationToken 参数添加 [EnumeratorCancellation] 特性。

2026年 5月 8日