public void SortUsers() { if (currentlySorting) { return; } currentlySorting = true; var watch = Stopwatch.StartNew(); SortedUsers.Clear(); var ops = new List <string>(); var voiced = new List <string>(); var users = new List <string>(); foreach (var user in Users) { if (user.Prefix.StartsWith("@")) { ops.Add("@" + user.Nick); } else if (user.Prefix.StartsWith("+")) { voiced.Add("+" + user.Nick); } else { users.Add(user.Nick); } } watch.Stop(); var elapsedMs = watch.ElapsedMilliseconds; Debug.WriteLine("Elapsed time to sort: " + elapsedMs + "ms"); watch.Start(); ops.Sort(); voiced.Sort(); users.Sort(); ops.ForEach(SortedUsers.Add); voiced.ForEach(SortedUsers.Add); users.ForEach(SortedUsers.Add); watch.Stop(); var elapsedMsOrder = watch.ElapsedMilliseconds; Debug.WriteLine("Elapsed time to order: " + elapsedMsOrder + "ms"); Debug.WriteLine("Total time: " + (elapsedMsOrder + elapsedMs) + "ms"); currentlySorting = false; }
public void ClearUsers() { Users.Clear(); SortedUsers.Clear(); }