使用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);//保存到全局缓存里
}
代码
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);//保存到全局缓存里
}
相关文章推荐
- 对jsp的一个小结(8)使用servlet控制新闻管理、使用过滤器(解决乱码)和监听器(统计在线用户人数)
- SharedObject使用:在FluorineFx.net与Flex中使用共享对象维护在线用户列表实例
- 删除邮箱存储时,您会收到一条"c1034a7f"错误消息:"一个或多个用户当前使用此邮箱存储"
- 发生系统错误 1219。不允许一个用户使用一个以上用户名与服务器或共享资源的多重连接。
- 连接共享文件夹时报错:发生系统错误 1219:不允许一个用户使用一个以上用户名与服务器或共享资源的多重连接
- 一个统计当前在线用户的解决方案,可以在聊天室、论坛、网站中使用
- 在主函数中提示用户输入用户名和密码。另写一方法来判断用户输入是否正确。该方法分别返回一个bool类型的登录结果和和一个string类型的登录信息。如登录成功,返回true及“登录成功”,若登录失败则返回false及“用户名错误”或“密码错误”(使用out参数)
- 广泛使用的一个对特定在线用户发送系统消息的程序
- 技术曝光:电信网络诈骗,是网络银行自己造成,网络媒体却一直使用媒体信息引导推卸到用户身上,是一个很大错误.根源在网络银行本身.
- 一个统计当前在线用户的解决方案,可以在聊天室、论坛、网站中使用
- 解决SQL Server 2008 错误15023:当前数据库中已存在用户或角色,SQLServer2008,错误15023 在使用SQL Server 2008时,我们经常会遇到一个
- SharedObject使用:在FluorineFx.net与Flex中使用共享对象维护在线用户列表实例【转】
- 人民币金额大写 在与财务相关的应用中,经常会用到人民币金额的大写,比如发票的打印程序。 本题的任务是:从键盘输入一个十亿以内的正整数(int类型),把它转换为人民币金额大写(不考虑用户输入错误
- 使用事务与锁,实现一个用户取过的数据不被其他用户取到
- 用户在线状态维护
- 解决 samba不允许一个用户使用一个以上用户名与一个服务器或共享资源的多重连接
- 一个对我比较重要的字符串类使用错误
- 谈一个现实问题,关于软件开发使用中给用户照成的损失谁来赔偿谁来负责的问题,您怎么看?
- 错误“操作必须使用一个可更新的查询”原因及解决办法
- 局域网共享资源路径更改无法登陆问题(不允许一个用户使用一个以上用户名与一个服务器或共享资源的多重连接)解决