.NET( 3.5) ( ). , IList ReaderWriterLockSlim . , Add :
public void Add(T item)
{
_readerWriterLockSlim.EnterWriteLock();
try { _actualList.Add(item); }
finally { _readerWriterLockSlim.ExitWriteLock(); }
}
concurrency . , GetEnumerator, IList; . ; :
public IEnumerator<T> GetEnumerator()
{
List<T> localList;
_lock.EnterReadLock();
try { localList= new List<T>(_actualList); }
finally { _lock.ExitReadLock(); }
foreach (T item in localList) yield return item;
}
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
return ((IEnumerable<T>)this).GetEnumerator();
}
. - ( ) , ! , , , .. , !