ReSharper 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; } }

快速修复

快速修复会将 [EnumeratorCancellation] 属性添加到所选的 CancellationToken 参数。

2026年 5月 8日