I have a class that maintains a private Dictionary instance that caches some data.
Dictionary
The class writes to the dictionary from multiple threads using a
Review next possibility, just exposes ICollection interface, so in Values() you can return your own implementation. This implementation will use only reference on Dictioanry.Values and always use ReadLock for access items.