c# – async任务> throws“不是迭代器接口类型”错误

c# – async任务> throws“不是迭代器接口类型”错误,第1张

概述以下代码是throwing不是迭代器接口类型,只有当我使用async等待和包装IEnumerable与任务.如果我删除异步等待,我可以使用IEnumerable< List>>. private async Task<IEnumerable<List<T>>> GetTableDataAsync<T>(CloudTable cloudTable, TableQuery<T> tableQuery) 以下代码是throwing不是迭代器接口类型,只有当我使用async等待和包装IEnumerable与任务.如果我删除异步等待,我可以使用IEnumerable< List>>.
private async Task<IEnumerable<List<T>>> GettableDataAsync<T>(Cloudtable cloudtable,tablequery<T> tablequery)        where T : ItableEntity,new()    {        tableContinuationToken contineousToken = null;        do        {            var currentSegment = await GetAzuretableDateAsync(cloudtable,tablequery,contineousToken);            contineousToken = currentSegment.ContinuationToken;            yIEld return currentSegment.Results;        } while (contineousToken != null);    }

虽然我可以考虑Rx,我不知道是什么导致这个问题.

解决方法 只有方法声明它们返回IEnumerable< T>,IEnumerable,IEnumerator或IEnumerator< T>可以用迭代器块实现.这排除了所有异步方法.

从根本上说,无论如何,如果IEnumerable< T>是基于拉的,而异步方法更具反应性.此外,迭代器块的要点是调用者可以看到中间结果 – 而在async方法本身完成之前,从异步方法返回的任务将不会完成.

你需要采取一种替代方法 – 无论是Rx还是其他方面.你可能不想先考虑实现的样子,但是呼叫者会做什么.也许你实际上想要一个IEnumerable< Task< List< T>

总结

以上是内存溢出为你收集整理的c# – async任务> throws“不是迭代器接口类型”错误全部内容,希望文章能够帮你解决c# – async任务> throws“不是迭代器接口类型”错误所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1262449.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存