private void OnNewUserConnect(User user) { this.Invoke((Action)(() => { lbConnectedUsers.Items.Add(user.UserNickname); })); }
async private void OnNewUserConnect(User user) { //this.BeginInvoke((Action)(() => //{ // lbConnectedUsers.Items.Add(user.UserNickname); //})); await Task.Run( () => lbConnectedUsers.Items.Add(user.UserNickname) ); }
void ProcessServerMessage(Message message) { //$"ACTION=ActionName;CLIENTID={client.ClientId};NICKNAME={client.Nickname}", var messageVariables = message.MessageText.Split(';'); var variables = messageVariables.Select(x => { var parts = x.Split('='); var variable = parts[0]; var value = parts[1]; return new { Variable = variable, Value = value }; }).ToArray(); //if (!_isFirstMessageReceived) //{ // _clientId = Convert.ToInt32(variables[0].Value); // _isFirstMessageReceived = true; // return; //} var actionVariable = variables.First(x => x.Variable == "ACTION"); var action = (ServerActions)Enum.Parse(typeof(ServerActions), actionVariable.Value); switch (action) { case ServerActions.ClientId: var idVariable = variables.First(x => x.Variable == "CLIENTID"); _clientId = Convert.ToInt32(idVariable.Value); break; case ServerActions.NewClientConnected: var clientId = Convert.ToInt32(variables.First(x => x.Variable == "NEWCLIENTID").Value); var nickName = variables.First(x => x.Variable == "NICKNAME").Value; var user = new User { UserId = clientId, UserNickname = nickName }; ConnectedUsers.Add(user); if (NewUserConnected != null) NewUserConnected(user); break; case ServerActions.ClientDisconnected: break; default: break; } }