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

我通常使用

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


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

对于性能问题,我不想从IEnumerable获取IEnumerator

我还能做些什么来使IEnumerator异步循环

最佳答案

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

关于c# - 使用IEnumerator对项目执行异步操作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57207127/

10-11 16:36