下面的代码有两个问题:
- 在锁内使用 yield return 是否合法?
当我们在 foreach 循环中循环 Get() 方法时,锁会发生什么?
public IEnumerable<SomeObject> Get() { _lock.EnterReadLock(); try { foreach (var item in _dictionary) { yield return new SomeObject(item.Key, item.Value); } } finally { _lock.ExitReadLock(); } } private ReaderWriterLockSlim _lock = new ReaderWriterLockSlim();