我试图强制ASP.NET站点在启动时将大量对象预加载到缓存中。每个对象需要2-10秒才能生成,这意味着按顺序加载1200个以上的对象需要花40分钟才能完成。ASP.NET中的异步任务
我明显不希望网站花40分钟启动,所以只需在Application_Start中加入预加载过程并不是一个真正的选择。我无法将其移出Web应用程序的上下文(即Windows服务或外部进程),因为我需要访问缓存。理想情况下,这项任务将被异步执行,同时让该网站开展业务。一位同事建议使用BackgroundWorker class分拆一个新线程,这听起来像是一个很好的解决方案。但是,据我所知,这个特定的类实际上并不适用于ASP.NET,而是WinForms。我担心线程在完成之前可能会被中断。
- BackgroundWorker类是否可以安全地在ASP.NET应用程序中使用?
- 我还有什么其他的选择来解决这个问题?
UPDATE:
我会看看到Windows AppFabric中更好的缓存,我可以从Web应用程序之外加载。但是,在此之前,我必须继续使用ASP.NET缓存和BackgroundWorker类。这不起作用,我问了一个新问题,Load objects into cache from new thread。
什么是“元素”? – 2011-04-21 08:35:34
我们内部搜索的结果集。也许我应该改为“对象”呢? :) – 2011-04-21 08:36:34
如果你只是想剥离一个新的线程,那么“新线程()”有什么不对? – 2011-04-21 08:42:41