您的位置:首页 > 运维架构

使用Hashtable维护在线用户时的一个小错误。

2010-08-17 09:21 453 查看
有一个网站(成长家园www.aoecn.cn)项目中,使用了Hashtable来维护在线用户的状态,具体代码如下:

代码

Hashtable hs = getCacheHs();//从全局缓存中取出 Hashtable 表

lock (hs) //要锁住操作Hashtable 的整个过程
{
if(hs.Contains(uid)){ //比较Hashtable 表中是否有这个用户
hs[uid] = DateTime.Now;//有用户的更新最后活动时间
}else{
hs.Add(uid, DateTime.Now);//没有的插入一个新的行
}

DateTime t1 = getUpdateTime();//取得保存的上次更新时间
DateTime nowt = DateTime.Now;

TimeSpan ts = nowt - t1;
if (ts.Minutes >2)
{
//大于2分钟就把Hashtable表中的数据更新到数据库中

foreach (DictionaryEntry o in hs)
{
Updata(o.Key, o.Value);//更新到数据库方法
}            
hs.Clear();//清空Hashtable
setUpdateTime(DateTime.Now);//保存这次更新时间

}
SaveCacheHs(hs);//保存到全局缓存里

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐