/// <summary>
/// 缓存相关的操作类
    /// 李天平
    /// 2006.4.1
/// </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值
/// </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值
/// </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);
}
}

解决方案 »

  1.   

     HttpRuntime.Cache 可以在多线程环境下使用。如果经常边添加边读取。
      

  2.   

    如果经常边添加边读取。??
      不是经常,基本上3个小时修改一次,但是一旦重新设置缓存程序就会报“System.ArgumentException: 已添加了具有相同键的项。”
      

  3.   


    既然要修改缓存,当缓存项已经存在的时候,要先删除掉,再Insert
      

  4.   

    问题是,/// <summary>
            /// 设置当前应用程序指定CacheKey的Cache值
            /// </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;
                lock (lockHelper)
                {
                    objCache.Remove(CacheKey);
                    objCache.Insert(CacheKey, objObject, null, absoluteExpiration, slidingExpiration);
                }
            }
    已经使用这种方式,但是还会出现“System.ArgumentException: 已添加了具有相同键的项。”