public void AddUsersToViewlist(Dictionary<string, Types.UserLevel> userList) { List<ListViewItem> items = new List<ListViewItem>(); ListViewItem[] list = new ListViewItem[mdTabChatViewerList.Items.Count]; mdTabChatViewerList.Items.CopyTo(list, 0); _addUserRangeThread = new Thread(() => { foreach (KeyValuePair<string, Types.UserLevel> item in userList) { if (list.All(s => s.Name != item.Key)) { ListViewItem li = new ListViewItem(" " + Types.GetUserLevelLetter(item.Value), item.Value.ToString()); li.SubItems.Add(item.Key); li.Name = item.Key; items.Add(li); } } this.SafeInvoke(() => { mdTabChatViewerList.Items.AddRange(items.ToArray()); }); }) { IsBackground = true }; _addUserRangeThread.Start(); }