Кэш явно не располагает объектами, когда они по какой-либо причине извлекаются из кэша.Вы можете доказать это, протестировав его, но если бы это было так, то это было бы в документации, а это не так:
http://msdn.microsoft.com/en-us/library/system.web.caching.cache.aspx
Жизненный цикл объектов в кэшеможет быть расширен за счет нахождения в кэше, так как в кэше содержится ссылка на них.Если вы хотите избежать этого, вы можете вместо этого кэшировать слабую ссылку.
http://msdn.microsoft.com/en-us/library/system.weakreference.aspx
Если вы сделаете это, не будет никаких последствий жизненного цикла сохранения ссылки в кэше.
Одна вещь, о которой стоит подумать - вы говорите, что хотите использовать кеш, потому что он потокобезопасен.Вы должны знать, что сам объект кеша является поточно-ориентированным, но если вы кешируете в кеше не поточно-безопасный объект, который не сделает сам кешируемый объект автоматически поточно-ориентированным.В частности, List<T>
не является потокобезопасным, и сохранение его в кэше не изменит этого.Используйте одновременные коллекции, если хотите обеспечить безопасность потоков.