我需要编写一个以异步方式返回对象的IEnumerable的方法,以及通过该方法返回的对象的IEnumerable的Foreach循环。 我正在使用.Net Core 2,但不太确定如何执行此任务。 .netcore2是否可以返回异步IEnumerable?
public async IEnumerable<int> MethodThatReturnsObjectsAsync()
{
}
foreach(int item in await MethodThatReturnsObjectsAsync())
{
Action(item);
}
谢谢。
答案 0 :(得分:1)
是的,它只被调用一次。它只会创建一个状态机(如果您的调用方法是async
方法。即async Task
,async Task<T>
,Async void
)
以您的情况
public async Task<IEnumerable<int>> Test(Action<something> action)
{
foreach (int item in await MethodThatReturnsObjectsAsync())
{
action(item);
}
...
return ...
}
private static async Task<IEnumerable<int>> MethodThatReturnsObjectsAsync()
{
throw new NotImplementedException();
}
答案 1 :(得分:0)
否,很遗憾,不可能使用ATM。 NET CORE 3.0将附带IASYNCENumerable,IASYNCENumerable可以做到这一点,但这只是现在的先例。