changed to read lock in ConcurrentList.GetEnumerator