我正在构建一个客户端,用于持续使用数据源中的新记录。集成是基于拉的,我的客户会定期查询数据源以获取新记录。我将IAsyncEnumerable
其用作此连续新记录流的返回类型。以下是相关方法的要点:
public async IAsyncEnumerable<Record> StreamRecords(...)
{
while (!cancellationToken.IsCancellationRequested)
{
using var response = await _httpClient.SendAsync(request, cancellationToken);
var records = _parser.Parse(response.Content);
foreach (var r in records) yield return r;
await Task.Delay(waitPeriod, cancellationToken);
}
}
这是对 IAsyncEnumerable 的适当使用吗?这个流应该是“永无止境的”或“连续的”(至少在 cancelToken 或错误之前)。