110,534
社区成员
发帖
与我相关
我的任务
分享
public IEnumerable<int> Generate(int amount) {
for(int i = 0; i < amount; i++)
{
Thread.Sleep(TimeSpan.FromSeconds(2));
yield return i;
}
}
var iter = Generate(5).GetEnumerator();
while (iter.MoveNext())
{
Console.WriteLine(iter.Current);
}
public IEnumerable<int> Generate(int amount) {
for(int i = 0; i < amount; i++)
{
yield return i;
}
}
的时候,这个Generate 方法本身就是异步的,它仅仅是被动返回一个 MoveNext 动作结果而已,你调用它的方法间隔多少时间调用一次这个方法的 MoveNext 机制,就会自然而然地间隔长时间。
这就好像一个人本身是瞎子,却来责怪房间里没有安装电灯。完全是本末倒置的。
故意颠倒黑白,把程序设计的源头驱动逻辑给颠倒了,明明是调用 Generate(.....).MoveNext 的客户代码不按照间隔时间调用它,却说什么是这个迭代器不去主动调用自己的宿主代码。