2011-01-27 115 views
2

我想知道是否有任何事件发生在每次缓存项目也是过期或缓存项目过期时引发的任何事件。我正在使用企业图书馆在asp.net中进行缓存。当缓存即将过期而不是调用函数或自己调用事件时,我想在数据库中存储一些数据我正在考虑使用正在使用的已管理缓存库事件刷新或处理缓存项目。缓存过期事件asp.net企业库

回答

2

假设您使用缓存应用程序块,则在向缓存中添加项时指定回调委托。

从所述高速缓存中的项目的拆除通知,要求您指定的调用实现ICacheItemRefreshAction给Add方法

您需要提供一个类实现ICacheItemRefreshAction类:

[Serializable] 
public class ProductCacheRefreshAction : ICacheItemRefreshAction 
{ 
    public void Refresh(string key, object expiredValue, CacheItemRemovedReason removalReason) 
    { 
    // Item has been removed from cache. Perform desired actions here, based on 
    // the removal reason (for example, refresh the cache with the item). 
    } 
} 

正如你所看到的,当一个项目被删除时,这个Refresh()方法被调用时使用的关键是这个对象是rem Oved的。您只需将expiredObject参数转换为正确的类型并安排将其存储到数据库。

如此处所述:http://msdn.microsoft.com/en-us/library/ff664621(v=PandP.50).aspx

+0

这是否也给我旧的缓存对象?即我的基本要求是在缓存项目过期后保存旧的缓存数据。 – Nikshep 2011-01-27 11:30:40