/// <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(); } } } }
/// <summary> /// 更新在线用户 /// </summary> /// <param name="state">state</param> public void UpdateOnlineUser(UpdateOnlineUserState state) { ManagedThreadPool.QueueUserWorkItem(new WaitCallback(OnlineUsers.UpdateOnlineUser), state); }