Beispiel #1
0
        /// <summary>
        /// 更新在线用户
        /// </summary>
        /// <param name="state">UpdateOnlineUserState类型对象</param>
        public static void UpdateOnlineUser(object state)
        {
            lock (_locker)
            {
                UpdateOnlineUserState updateOnlineUserState = (UpdateOnlineUserState)state;

                OnlineUserInfo onlineUserInfo = GetOnlineUserBySid(updateOnlineUserState.Sid);
                if (onlineUserInfo != null)
                {
                    if (onlineUserInfo.IP != updateOnlineUserState.IP)
                    {
                        UpdateOnlineUserIP(onlineUserInfo.OlId, updateOnlineUserState.IP);
                    }

                    if (onlineUserInfo.Uid != updateOnlineUserState.Uid)
                    {
                        UpdateOnlineUserUid(onlineUserInfo.OlId, updateOnlineUserState.Uid);
                    }

                    DeleteExpiredOnlineUser();
                }
                else
                {
                    int olid = 0;
                    if (updateOnlineUserState.Uid > 0)
                    {
                        olid = CreateOnlineMember(updateOnlineUserState.Uid, updateOnlineUserState.Sid, updateOnlineUserState.NickName, updateOnlineUserState.UpdateTime, updateOnlineUserState.IP, updateOnlineUserState.RegionId);
                    }
                    else
                    {
                        olid = CreateOnlineGuest(updateOnlineUserState.Sid, updateOnlineUserState.UpdateTime, updateOnlineUserState.IP, updateOnlineUserState.RegionId);
                    }

                    if (olid < 2147000000)
                    {
                        DeleteExpiredOnlineUser();
                    }
                    else
                    {
                        ResetOnlineUserTable();
                    }
                }
            }
        }
Beispiel #2
0
 /// <summary>
 /// 更新在线用户
 /// </summary>
 /// <param name="state">state</param>
 public void UpdateOnlineUser(UpdateOnlineUserState state)
 {
     ManagedThreadPool.QueueUserWorkItem(new WaitCallback(OnlineUsers.UpdateOnlineUser), state);
 }