httpストリームからcsvドキュメントを読み取る次のメソッドがあります
public async IAsyncEnumerable<Line> GetLines([EnumeratorCancellation] CancellationToken cancellationToken)
{
HttpResponseMessage response = GetResponse();
using var responseStream = await response.Content.ReadAsStreamAsync();
using var streamReader = new StreamReader(responseStream);
using var csvReader = new CsvReader(streamReader);
while (!cancellationToken.IsCancellationRequested && await csvReader.ReadAsync())
{
yield return csvReader.GetRecord<Line>();
}
}
結果を使用する別の方法
var documentAsyncEnumerable = graphClient.GetLines(cancellationToken);
await foreach (var document in documentAsyncEnumerable.WithCancellation(cancellationToken))
{
// Do something with document
}
私の質問は、キャンセル トークンを 1 か所だけで使用する必要があるかどうかです。レコードを生成する前にキャンセルトークンを処理する必要がありますか、それとも IAsyncEnumerable.WithCancellation() は基本的に同じことをしていますか? あるとすれば違いは何ですか?