标签: c# ienumerable
我想知道如果IEnumerable方法中存在锁定将会发生什么 例如这样的程序:
IEnumerable<int> Foo() { .... lock(...) { yield return ...; } }
由于IEnumerable是延迟执行的,并且不会立即生成所有结果,因此锁在方法内部会做什么?它会在每个元素生成后解锁还是会保持锁定,直到IEnumerable对象被GC为止?或其他什么?