winform中Cache的使用,支持生命周期
winform中Cache的使用,支持缓存生命周期的设置, 实现原理其实是使用了静态集合对象来存储.
废话少说, 直接上代码
public class Cache
{
private static Hashtable list_data;
private static Hashtable key_data;
public static void Register()
{
list_data = Hashtable.Synchronized(new Hashtable());
key_data = Hashtable.Synchronized(new Hashtable());
}
public static void Set(string key, int value, int life)
{
object okey = (object)key;
object ovalue = (object)value;
Cache._Set(okey, ovalue, life);
}
public static int GetInt(string key)
{
object okey = (object)key;
object obj = Cache._Get(okey);
if (obj == null)
{
return 0;
}
int val = 0;
int.TryParse(obj.ToString(), out val);
return val;
}
public static void Set(string key, string value, int life)
{
object okey = (object)key;
object ovalue = (object)value;
Cache._Set(okey, ovalue, life);
}
public static string GetString(string key)
{
object okey = (object)key;
object obj = Cache._Get(okey);
return obj == null ? string.Empty : obj.ToString();
}
public static bool Exists(string key)
{
object okey = (object)key;
object obj = Cache._Get(okey);
return obj != null;
}
private static void _Set(object key , object value , int life)
{
life += Cache.L();
object olife = (object)life;
if (list_data.ContainsKey(key))
{
list_data[key] = value;
}
else
{
list_data.Add(key, value);
}
if (key_data.ContainsKey(key))
{
key_data[key] = olife;
}
else
{
key_data.Add(key, olife);
}
}
private static object _Get(object key)
{
object obj = null;
if (key_data.ContainsKey(key))
{
object olife = key_data[key];
if (olife == null)
{
Cache.Remove(key);
return obj;
}
int life = 0;
int.TryParse(olife.ToString(), out life);
if (life < L())
{
Cache.Remove(key);
return obj;
}
}
else
{
return obj;
}
if (list_data.ContainsKey(key))
{
obj = list_data[key];
}
return obj;
}
public static void Remove(object key)
{
list_data.Remove(key);
key_data.Remove(key);
}
public static void Remove(string key)
{
Cache.Remove((object)key);
}
private static int L()
{
return Convert.ToInt32((DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000);
}
}
本文链接:http://likelys.com/article/10547
posted @ 2015-11-19 17:36:17
