GameFramework.UserProcessScheduler.DoLastSaveUserData C# (CSharp) Method

DoLastSaveUserData() private method

private DoLastSaveUserData ( ) : void
return void
        internal void DoLastSaveUserData()
        {
            m_LastSaveFinished = false;
            //服务器关闭前的最后一次存储操作
            var ds_thread = UserServer.Instance.DataCacheThread;
            if (ds_thread.DataStoreAvailable == true) {
                //1.通知客户端服务器关闭
                foreach (var guidPair in m_ActiveUserGuids) {
                    UserInfo user = GetUserInfo(guidPair.Key);
                    if (user != null) {
                        NodeMessage retMsg = new NodeMessage(LobbyMessageDefine.ServerShutdown, user.Guid);
                        NodeMessageDispatcher.SendNodeMessage(user.NodeName, retMsg);
                    }
                }
                LogSys.Log(LOG_TYPE.MONITOR, "DoLastSaveUserData Step_1: Notice game client ServerShutdown. UserCount:{0}", m_ActiveUserGuids.Count);
                //2.等待10s
                Thread.Sleep(10000);
                LogSys.Log(LOG_TYPE.MONITOR, "DoLastSaveUserData Step_2: Wait for 10s.");
                //3.关闭Node
                CenterHubApi.SendCommandByName(UserServerConfig.WorldId, "NodeJs1", "QuitNodeJs");
                CenterHubApi.SendCommandByName(UserServerConfig.WorldId, "NodeJs2", "QuitNodeJs");
                CenterHubApi.SendCommandByName(UserServerConfig.WorldId, "NodeJs3", "QuitNodeJs");
                CenterHubApi.SendCommandByName(UserServerConfig.WorldId, "NodeJs4", "QuitNodeJs");
                CenterHubApi.SendCommandByName(UserServerConfig.WorldId, "NodeJs5", "QuitNodeJs");
                CenterHubApi.SendCommandByName(UserServerConfig.WorldId, "NodeJs6", "QuitNodeJs");
                CenterHubApi.SendCommandByName(UserServerConfig.WorldId, "NodeJs7", "QuitNodeJs");
                CenterHubApi.SendCommandByName(UserServerConfig.WorldId, "NodeJs8", "QuitNodeJs");
                CenterHubApi.SendCommandByName(UserServerConfig.WorldId, "NodeJs9", "QuitNodeJs");
                CenterHubApi.SendCommandByName(UserServerConfig.WorldId, "RoomSvr1", "QuitRoomServer");
                CenterHubApi.SendCommandByName(UserServerConfig.WorldId, "RoomSvr2", "QuitRoomServer");
                CenterHubApi.SendCommandByName(UserServerConfig.WorldId, "RoomSvr3", "QuitRoomServer");
                CenterHubApi.SendCommandByName(UserServerConfig.WorldId, "RoomSvr4", "QuitRoomServer");
                CenterHubApi.SendCommandByName(UserServerConfig.WorldId, "RoomSvr5", "QuitRoomServer");
                CenterHubApi.SendCommandByName(UserServerConfig.WorldId, "RoomSvr6", "QuitRoomServer");
                CenterHubApi.SendCommandByName(UserServerConfig.WorldId, "RoomSvr11", "QuitRoomServer");
                CenterHubApi.SendCommandByName(UserServerConfig.WorldId, "RoomSvr12", "QuitRoomServer");
                CenterHubApi.SendCommandByName(UserServerConfig.WorldId, "RoomSvr13", "QuitRoomServer");
                CenterHubApi.SendCommandByName(UserServerConfig.WorldId, "RoomSvr14", "QuitRoomServer");
                CenterHubApi.SendCommandByName(UserServerConfig.WorldId, "RoomSvr15", "QuitRoomServer");
                CenterHubApi.SendCommandByName(UserServerConfig.WorldId, "RoomSvr16", "QuitRoomServer");
                CenterHubApi.SendCommandByName(UserServerConfig.WorldId, "GmServer", "QuitGmServer");
                CenterHubApi.SendCommandByName(UserServerConfig.WorldId, "ServerBridge", "QuitServerBridge");
                LogSys.Log(LOG_TYPE.MONITOR, "DoLastSaveUserData Step_3: Close Servers.");
                //4.保存玩家数据
                foreach (var guidPair in m_ActiveUserGuids) {
                    UserInfo user = GetUserInfo(guidPair.Key);
                    if (user != null) {
                        user.NextUserSaveCount = DataCacheThread.UltimateSaveCount;
                        this.GetUserThread(user).QueueAction(ds_thread.DSPSaveUser, user, user.NextUserSaveCount);
                    }
                }
                LogSys.Log(LOG_TYPE.MONITOR, "DoLastSaveUserData Step_4: Start to save UserData for last. UserCount:{0}", m_ActiveUserGuids.Count);
            }
            m_IsLastSave = true;
        }