public static IEnumerable <Item> GetEnumeratedItems(this Region region) { List <Item> list = region.GetItems(); IEnumerable <Item> e; lock (_ItemLock) { e = list.AsParallel().Where(i => i != null && i.GetRegion().IsPartOf(region)); } foreach (Item item in e) { yield return(item); } list.Clear(); list.TrimExcess(); }