Да, хорошо, он вызывается только один раз. Он создает только один конечный автомат (если ваш вызывающий метод - метод 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();
}