枚举器是如何工作的 - 我知道它们在幕后构建了一个状态机,但如果我两次调用GetEnumerator,我会得到两个不同的对象吗?
如果我做这样的事情
public IEnumerator<T> GetEnumerator()
{
yield return 1;
yield return 2;
}
我能否在方法开始时获取锁,并且这个锁会一直保持到枚举器返回null或者枚举器被GC回收?
如果调用者重置了枚举器,会发生什么等问题 -
我的问题是,在处理枚举器时如何管理锁定的最佳方法
注意:客户端不能负责线程同步 - 类内部需要负责
最后,上面的示例是问题的简化 - yield语句做的比我展示的要多一些 :)