System.Web.Caching.Cache删除某键后,希望同时触发其它动作(关键时刻,还是事件靠的住)
System.Web.Caching.Cache是.net为我们提供的一个轻量级的缓存组件,它提供了最基础的增,增过期,删除,获取等操作,下面是对Cache进行的一个封装,方便以后统一调用和扩展。
/// <summary>
/// 缓o存?相à关?的?操ù作÷类à
/// 占?占?
/// </summary>
public class DataCache
{
/// <summary>
/// 获?取?当±前°应|用?程ì序ò指?定¨CacheKey的?Cache值μ
/// </summary>
/// <param name="CacheKey"></param>
/// <returns></returns>
public static object GetCache(string CacheKey)
{
System.Web.Caching.Cache objCache = HttpRuntime.Cache;
return objCache[CacheKey];
}
/// <summary>
/// 设è置?当±前°应|用?程ì序ò指?定¨CacheKey的?Cache值μ
/// 调÷用?:oDataCache.SetCache("name", "zzl");
/// </summary>
/// <param name="CacheKey"></param>
/// <param name="objObject"></param>
public static void SetCache(string CacheKey, object objObject)
{
System.Web.Caching.Cache objCache = HttpRuntime.Cache;
objCache.Insert(CacheKey, objObject);
}
/// <summary>
/// 设è置?当±前°应|用?程ì序ò指?定¨CacheKey的?Cache值μ
/// 调÷用?:oDataCache.SetCache("name", "zzl", DateTime.Now.AddMinutes(1), TimeSpan.Zero);
/// </summary>
/// <param name="CacheKey"></param>
/// <param name="objObject"></param>
public static void SetCache(string CacheKey, object objObject, DateTime absoluteExpiration, TimeSpan slidingExpiration)
{
System.Web.Caching.Cache objCache = HttpRuntime.Cache;
objCache.Insert(CacheKey, objObject, null, absoluteExpiration, slidingExpiration);
}
/// <summary>
/// 移?除y指?定¨Cache
/// </summary>
/// <param name="CacheKey"></param>
public static void RemoveCache(string CacheKey)
{
System.Web.Caching.Cache objCache = HttpRuntime.Cache;
objCache.Remove(CacheKey);
}
#region Events
/// <summary>
/// 缓o存?删?除y事?件t
/// </summary>
public static event CacheEventHandler CacheDeleted;
#endregion
#region Methods
/// <summary>
/// 触¥发¢缓o存?删?除y事?件t
/// </summary>
public static void OnCacheDeleted(string key)
{
if ((CacheDeleted != null))
{
CacheDeleted(null, new CacheEventArgs(key));
}
Remove(key);
}
#endregion
}
#region Delegates
/// <summary>
/// 缓o存?委ˉ托D
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
public delegate void CacheEventHandler(object sender, CacheEventArgs e);
#endregion
/// <summary>
/// 缓o存?事?件t源′
/// </summary>
public class CacheEventArgs
{
public CacheEventArgs()
{
}
public CacheEventArgs(string cacheKey)
{
this.CacheKey = cacheKey;
}
public string CacheKey { get; set; }
}
在这个类中,有一个关于删除键时的事件,它的作用是在删除某个键时,进行与它关联的其它操作,例如:在用户登出时,希望将它的cache记录清除,并删除一些记录性的操作,但记录性的操作是不固定的,为了为破坏程序的完整性,我们可以在登出时,先去将其需要的操作进行有订阅,如果以后有其它删除cache键需要的关联操作,只要订阅就可以了
代码如下:
static CommonMethod()
{
iUserRepository = new UserRepository();
//订?阅?了?CacheDeleted这a个?事?件t,?当±它ü被?触¥发¢时±,?将?自?动ˉ执′行D被?绑ó定¨的?方?法¨
DataCache.CacheDeleted += new CacheEventHandler(ClearUserRecord);
补充:Web开发 , ASP.Net ,