public void Add(IServer server) { if (mServerMapper == null) { return; } if (!IsInited) { IsInited = true; OnInit?.Invoke(); OnInit = default; } string serverName = (server != null) ? server.ServerName : string.Empty; if (!string.IsNullOrEmpty(serverName) && !mServerMapper.IsContainsKey(serverName)) { SetAndInitServer(ref server); SetServerPriority(server); mNewServers.Add(server); if (!mCanCheckServers) { mCanCheckServers = true; ShipDockApp.CallLater(CheckServerList); } mServerPriorAttrs = null; } }
/// <summary> /// 检测需要初始化的新容器 /// </summary> private void CheckServerList(int time) { Utils.CloneFrom(ref mServersWillCheck, ref mNewServers, true); int max = mServersWillCheck.Count; if (max > 0) { IServer server = null; for (int i = 0; i < max; i++) { server = mServersWillCheck[i]; if (server != null) { mServersWillSort.Add(server); } } } mServersWillCheck.Clear(); mCanCheckServers = false; ShipDockApp.CallLater(SortServersByPriority); }