The cache does not explicitly provide objects if they are thrown out of the cache for any reason. You can prove it by testing it, but if it were, it would be in the documentation, and it is not:
http://msdn.microsoft.com/en-us/library/system.web.caching.cache.aspx
The life cycle of objects in the cache can be extended by being in the cache, because the cache stores a link to them. If you want to avoid this, you can cache the weak link instead.
http://msdn.microsoft.com/en-us/library/system.weakreference.aspx
If you do this, there should be no consequences for storing the link in the cache.
What you should think about - you say that you want to use the cache because it is thread safe. You should know that the cache object itself is thread safe, but if you cache an insecure object in the cache that does not automatically make the cached object a safe thread. In particular, List<T> not thread safe, and storing it in the cache will not change it. Use parallel collections if you want to ensure thread safety.
James gaunt
source share