public void UpdateUsers(Dictionary <String, User> users) { MethodInvoker invoker = delegate { UsersList.Items.Clear(); Dictionary <String, User> temp = new Dictionary <string, User>(users); foreach (KeyValuePair <String, User> pair in temp) { User u = pair.Value; int where = -1; for (int i = 0; i < UsersList.Items.Count && where == -1; i++) { User user = (User)(UsersList.Items[i]); if ((int)(user.rank) < (int)(u.rank)) { where = i; } else if (user.nick.CompareTo(u.nick) >= 0) { where = i; } } if (where == -1) { UsersList.Items.Add(u); } else { UsersList.Items.Insert(where, u); } } }; UsersList.BeginInvoke(invoker); }