コードインスペクション:Async イテレーターに「CancellationToken」型のパラメーターが 1 つ以上ありますが、「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 年 6 月 12 日