日期:2013-09-27  浏览次数:20403 次

以下是我的类文件,

//online.cs(用户在线检测)
/*程序实现思路:

该用户有以下几个属性:
name:用户名
sessionID:用户ID,通过它唯一表示一个用户
iswhere :附加信息,用户当前所在位置
lasttime:用户登陆时间
curtime:本次刷新时间

在客户端,使用一个IFRAME,装载一个刷新页面,每隔XX秒更新一下他的名字对应的curtime,就表示他仍然在

在服务器端,建立一个守护线程,每隔固定时间就运行一遍,然后判断当前所有用户列表中的时间间隔是否超出了
规定的时间,如果超出,则将该用户从在线列表中删除,这样就可以做到检测用户是否在线了,而如果再单独
写个用户离线后的处理,就可以解决好多人问到的:用户意外吊线后的处理。

*/

#define _debug

namespace Soholife
{
    using System;
    using System.Data;
    using System.Data.SqlClient;
    using System.Collections ;
    using System.Threading ;
    using System.Web;
    using System.Diagnostics;
    
    
    //定义了一个结构
    public struct User
    {
        public string name;
        public DateTime lasttime;  
        public DateTime curtime;
        public string sessionid;
        public string iswhere;
    }
    
    //定义在线用户类
    public class OnLineUser
    {
        private static ArrayList _alluser ;        //定义用户
        
        public ArrayList alluser
        {
            get{return _alluser;}
            set{_alluser=value;}
        }
        
        public OnLineUser()        //构造函数
        {
            if(_alluser==null)
            {
                _alluser=new ArrayList();    
            }
        }

           //功能说明:将当前用户加入在线列表
        //如果该用户的数据当前仍然在在线列表中,则暂时先不让该用户登陆,提示用户存在
        public bool  AddUserToOnLine(User user)
        {
            //需要先判断用户是否已经在用户列表中了
            if(_alluser==null)
            {
                _alluser.Add(user);
                return (true);
            }
            else
            {
          &nbs