使用IEnumerator对项目执行异步操作

时间:2019-07-25 17:13:52

标签: c# ienumerator

我正在使用一些API,该API返回一个IEnumerator子实例,我想对返回的每个对象执行一些功能

我通常使用

while(Enumerator.MoveNext())
{
    DoSomething(Enumerator.current);
}

我没有IEnumerable对象 而且我想DoSomething与每个对象异步

我不希望因为性能问题而从IEnumerable那里获得IEnumerator

我还能做什么来与IEnumerator进行异步

1 个答案:

答案 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;
    }
}