我正在使用一些API,该API返回一个IEnumerator
子实例,我想对返回的每个对象执行一些功能
我通常使用
while(Enumerator.MoveNext())
{
DoSomething(Enumerator.current);
}
我没有IEnumerable
对象
而且我想DoSomething
与每个对象异步
我不希望因为性能问题而从IEnumerable
那里获得IEnumerator
。
我还能做什么来与IEnumerator
进行异步
答案 0 :(得分:3)
C# 8.0 has Async Enumerable feature。
static async Task Main(string[] args)
{
await foreach (var dataPoint in FetchIOTData())
{
Console.WriteLine(dataPoint);
}
Console.ReadLine();
}
static async IAsyncEnumerable<int> FetchIOTData()
{
for (int i = 1; i <= 10; i++)
{
await Task.Delay(1000);//Simulate waiting for data to come through.
yield return i;
}
}