使用APPLICATION制作缓存,转存一下,有一段写的还可以。
2014-02-08 10:40
211 查看
public sealed class CacheManager
{
private HttpApplicationState appPool = null;
/// <summary>
/// 构造函数
/// </summary>
public CacheManager()
{
this.appPool = HttpContext.Current.Application;
}
/// <summary>
/// 构造函数
/// </summary>
/// <param name="application">HttpApplicationState 对象</param>
public CacheManager(HttpApplicationState application)
{
this.appPool = application;
}
/// <summary>
/// 删除缓存
/// </summary>
/// <param name="key">缓存名称</param>
public void Delete(string key)
{
this.appPool.Lock();
this.appPool.Remove(key);
this.appPool.Remove(key + "(expTime)");
this.appPool.UnLock();
}
/// <summary>
/// 添加缓存
/// </summary>
/// <param name="key">缓存名称</param>
/// <param name="value">缓存值</param>
/// <returns></returns>
public bool Add(string key, object value)
{
try
{
this.appPool.Lock();
this.appPool[key] = value;
this.appPool[key + "(expTime)"] = DateTime.MaxValue; // 这里设置一个最大时间值,直到Application结束。
this.appPool.UnLock();
}
catch
{
return false;
}
return true;
}
/// <summary>
/// 添加缓存
/// </summary>
/// <param name="key">缓存名称</param>
/// <param name="value">缓存值</param>
/// <param name="expireTime">有效时间</param>
/// <returns></returns>
public bool Add(string key, object value, DateTime expireTime)
{
try
{
this.appPool.Lock();
this.appPool[key] = value;
this.appPool[key + "(expTime)"] = expireTime;
this.appPool.UnLock();
}
catch
{
return false;
}
return true;
}
/// <summary>
/// 获取缓存
/// </summary>
/// <param name="key">缓存名称</param>
/// <returns></returns>
public object Get(string key)
{
object o = this.appPool.Get(key + "(expTime)");
if (o != null)
{
TimeSpan ts = (TimeSpan)(DateTime.Now - (DateTime)o);
if (ts.TotalSeconds < 0)
{
return this.appPool.Get(key);
}
else
{
this.Delete(key);
return null;
}
{
private HttpApplicationState appPool = null;
/// <summary>
/// 构造函数
/// </summary>
public CacheManager()
{
this.appPool = HttpContext.Current.Application;
}
/// <summary>
/// 构造函数
/// </summary>
/// <param name="application">HttpApplicationState 对象</param>
public CacheManager(HttpApplicationState application)
{
this.appPool = application;
}
/// <summary>
/// 删除缓存
/// </summary>
/// <param name="key">缓存名称</param>
public void Delete(string key)
{
this.appPool.Lock();
this.appPool.Remove(key);
this.appPool.Remove(key + "(expTime)");
this.appPool.UnLock();
}
/// <summary>
/// 添加缓存
/// </summary>
/// <param name="key">缓存名称</param>
/// <param name="value">缓存值</param>
/// <returns></returns>
public bool Add(string key, object value)
{
try
{
this.appPool.Lock();
this.appPool[key] = value;
this.appPool[key + "(expTime)"] = DateTime.MaxValue; // 这里设置一个最大时间值,直到Application结束。
this.appPool.UnLock();
}
catch
{
return false;
}
return true;
}
/// <summary>
/// 添加缓存
/// </summary>
/// <param name="key">缓存名称</param>
/// <param name="value">缓存值</param>
/// <param name="expireTime">有效时间</param>
/// <returns></returns>
public bool Add(string key, object value, DateTime expireTime)
{
try
{
this.appPool.Lock();
this.appPool[key] = value;
this.appPool[key + "(expTime)"] = expireTime;
this.appPool.UnLock();
}
catch
{
return false;
}
return true;
}
/// <summary>
/// 获取缓存
/// </summary>
/// <param name="key">缓存名称</param>
/// <returns></returns>
public object Get(string key)
{
object o = this.appPool.Get(key + "(expTime)");
if (o != null)
{
TimeSpan ts = (TimeSpan)(DateTime.Now - (DateTime)o);
if (ts.TotalSeconds < 0)
{
return this.appPool.Get(key);
}
else
{
this.Delete(key);
return null;
}
相关文章推荐
- 如何手动制作透明的图片相框 可以供android使用
- shiro SessionDao不设置CacheManager也可以使用缓存的一个问题
- 前些日子,发现Gmail可以使用Pop方式接受了,体验了一下
- 有谁可以share一下使用Starter Kits的经历?
- 《Gradle实战》如何配置利用Maven本地仓库 由于从Maven转过来使用Gradle,所以想利用原来已经缓存好的Maven本地仓库。所以下面一起来配置一下Gradle仓库的请求。 Gradl
- MimeType.exe 使 ActiveX 对象标签可以使用Mime type=application
- 一个关于vector和string使用的一个程序,可以参考一下
- 授权软件使用微信更改机器码挺方便的,做共享软件的可以参考一下
- 有AlertView的地方,如果使用application的keywindow跳转会出现,闪一下消失的情况
- 一段可以使用的 hibernate获得对象->action存入List->jsp页面用<s:iterator>迭代的代码
- 我们究竟什么时候可以使用Ehcache缓存
- 搜集了一段播放用java播放.wav的代码,可以直接使用
- vs. 2005也可以使用web application project, 如何把asp.net ajax特性加入呢?
- 对于集合的遍历操作,可以使用 itrator foreach for 循环,下面比较一下各自的优缺点
- Android中在application中使用map集合缓存数据
- 使用busybox-1.9.2制作根文件系统 (转,可以用来参考配置busybox)
- 适合制作U盘/硬盘启动的WinPE系统大搜集【都可以配合V3使用】
- iOS 创建用xib制作的ViewController,不可以使用new方法
- 如何在一段文字里点一下就可以在里面插入一段文字?
- JavaScript 使用计时事件制作的钟表 【每日一段代码76】