超时判断的一个方法

基本思想

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

Timer Elapsed代码

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

    }

}
        

触发器代码

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


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

posted on 2004-08-19 18:48  Ronan  阅读(1066)  评论(5编辑  收藏  举报

导航