public void SetClientRender(NetAccount account) { if (account != null) { netAccount = account; UserName.Text = string.IsNullOrEmpty(account.Alias) ? account.UserName : account.Alias; Factory.Text = $"({account.Factory})"; Roles.Children.Clear(); if (account.Roles?.Length > 0) { foreach (var m in account.Roles) { TextBlock block = new TextBlock { Background = Brushes.LightSkyBlue, Foreground = Brushes.Blue, Margin = new Thickness(0, 0, 4, 0), Text = m }; Roles.Children.Add(block); } } else { Roles.Children.Add(new TextBlock()); } // 启动线程池去显示头像 System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(ThreadPoolLoadPortrait), account); } }
/// <summary> /// 新增一个在线的客户端 /// </summary> /// <param name="account"></param> public void AddOnlineClient(NetAccount account) { hybirdLock.Enter(); OnlineClients.Add(account); m_ClientsOnlineCache = JArray.FromObject(OnlineClients).ToString(); hybirdLock.Leave(); }
public void SetNetAccount(NetAccount account) { m_NetAccount = account; // 加载头像,显示信息 label1.Text = (string.IsNullOrEmpty(account.Alias) ? account.UserName : account.Alias) + $" ({account.Factory})"; ThreadPool.QueueUserWorkItem(ThreadPoolLoadPortrait, null); }
public void ClientOnline(NetAccount account) { if (account != null) { AddControl(account); label2.Text = MyControls.Count.ToString(); } }
// 新增一个用户账户到在线客户端 private string AddOnLine(NetAccount item) { string result = string.Empty; lock (obj_lock) { all_accounts.Add(item); result = JArray.FromObject(all_accounts).ToString(); } return(result); }
private void AddControl(NetAccount account) { NetClientItem item = new NetClientItem(); panel1.Controls.Add(item); // 添加显示 item.SetNetAccount(account); item.Location = new Point(2, Location_Y - panel1.VerticalScroll.Value); // 控件的位置 int width = panel1.VerticalScroll.Visible ? Width - 4 - SystemInformation.VerticalScrollBarWidth : Width - 4; // 控件的宽度 item.Size = new Size(width, item.Size.Height); // 控件的大小 item.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right; // 控件随窗口变化的样式 Location_Y += item.Height + 4; // 位置偏移 MyControls.Add(item); }
private void ComplexServer_ClientOnline(AsyncStateOne object1) { // 客户端上线,发送消息给客户端 complexServer.SendAllClients(1, object1.IpAddress + " " + object1.LoginAlias + " : 上线"); // 发送在线信息 NetAccount account = new NetAccount() { Guid = object1.ClientUniqueID, Ip = object1.IpAddress, Name = object1.LoginAlias, OnlineTime = DateTime.Now.ToString(), }; complexServer.SendAllClients(3, AddOnLine(account)); // 在主界面显示信息 ShowMsg(object1.IpAddress + " " + object1.LoginAlias + " : 上线"); ShowOnlineClient( ); }