超时判断的一个方法

基本思想<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

    程序中加入一个Timer,每隔一段时间向服务器发送请求,记录用户最后的活动时间。在数据库中加入一个触发器,每当UPDATE在线用户表的时候删除最后活动时间和现在时间差为一定时间的记录,当符合上面条件的记录被删除后,本地记录用户的变量被清空,用户需要重新登陆才能获得自己的权限和操作。

Timer Elapsed代码

None.gif private   void  timer1_Elapsed( object  sender, System.Timers.ElapsedEventArgs e)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif    
if(State.curUser != "")
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        
string strSql = "Update db_online set ol_lastTime = getdate() where ol_user = '" + State.curUser +"'";
InBlock.gif        
if(Ser.execSql(strSql) < 0)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            State.curUser 
= "";
InBlock.gif            State.role 
= "";
InBlock.gif            MessageBox.Show(
"对不起,你超时了,请重新登陆");
ExpandedSubBlockEnd.gif        }

ExpandedSubBlockEnd.gif    }

ExpandedBlockEnd.gif}
        
None.gif

触发器代码

None.gif CREATE   TRIGGER  modify_state
None.gif
ON  在线记录 AFTER  UPDATE
None.gif
AS   IF   UPDATE (最后活动时间)
None.gif
BEGIN
None.gif    
Delete   FROM  在线记录  WHERE   DATEDIFF (ss, 最后活动时间,  GETDATE ())  >   3600
None.gif
END
None.gif


  第一次POST文章,水平真的有限(才学.net),只是感觉是自己想出来的东西。不知道有没有更好的判断方法,我在网上没有找到,如果哪位不吝赐教,那多谢了

转载于:https://www.cnblogs.com/ronan/archive/2004/08/19/34938.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值