I’m trying to force an ASP.NET site to pre-load a large number of objects into the cache on start-up. Each objects takes 2-10 seconds to generate, which means loading 1200+
Yes - you can start different worker thread (or background worker class) to load your cache. However, you anyway have to support on-demand (out-of-turn) loading of cache element because it may be needed before your cache is fully prepared.
Further, based on your application load/scale, you want to consider a out of process caching server or cache backed by some persistent storage (you will still need in-process cache such as ASP.NET cache for performance reasons). Advantage of such scheme would be validity of cache over application restarts, same cache can support multiple web servers in cluster, cache invalidations/updates can be handled via centralized controller etc. Of course, as said, I would be looking here only if there is a need for it.