void RefreshFlyPanelWorker(Action done) { var start = DateTime.Now.Millisecond; servers.ResetIndex(); var flatList = GetFilteredList(); var pagedList = GenPagedServerList(flatList); var showWelcome = servers.CountAllServers() == 0; List <Views.UserControls.ServerUI> removed = new List <Views.UserControls.ServerUI>(); Action next = () => { DisposeFlyPanelControlByList(removed); lazyStatusBarUpdater?.Deadline(); var relex = flyPanelUpdateInterval - (DateTime.Now.Millisecond - start); VgcApis.Misc.Utils.Sleep(Math.Max(0, relex)); done(); }; Action worker = () => { if (flyPanel == null || flyPanel.IsDisposed) { return; } flyPanel.SuspendLayout(); if (showWelcome) { removed = GetAllServerControls(); flyPanel.Controls.Clear(); flyPanel.Controls.Add(welcomeItem); } else { flyPanel.Controls.Remove(welcomeItem); var rmServUis = VgcApis.Misc.UI.DoHouseKeeping <Views.UserControls.ServerUI>(flyPanel, pagedList.Count); removed.AddRange(rmServUis); var servUis = GetAllServerControls(); BindServUiToCoreServCtrl(servUis, pagedList); } flyPanel.ResumeLayout(); }; VgcApis.Misc.UI.InvokeThen(worker, next); }
void RefreshFlyPanelWorker(Action done) { var start = DateTime.Now.Millisecond; servers.ResetIndex(); var flatList = GetFilteredList(); var pagedList = GenPagedServerList(flatList); var showWelcome = servers.CountAllServers() == 0; List <Views.UserControls.ServerUI> removed = null; Action next = () => { lazyStatusBarUpdater?.Postpone(); if (removed != null) { DisposeFlyPanelControlByList(removed); } var relex = flyPanelUpdateInterval - (DateTime.Now.Millisecond - start); VgcApis.Misc.Utils.Sleep(Math.Max(0, relex)); done(); }; Action worker = () => { flyPanel.SuspendLayout(); removed = GetAllServerControls(); flyPanel.Controls.Clear(); if (showWelcome) { flyPanel.Controls.Add(welcomeItem); } else { foreach (var serv in pagedList) { var ui = new Views.UserControls.ServerUI(serv); flyPanel.Controls.Add(ui); } } flyPanel.ResumeLayout(); }; VgcApis.Misc.UI.InvokeThen(worker, next); }
private void RefreshServersUiThen(Action next) { servers.ResetIndex(); var flatList = this.GetFilteredList(); var pagedList = GenPagedServerList(flatList); VgcApis.Misc.UI.RunInUiThreadIgnoreErrorThen(formMain, () => { ClearFlyPanel(pagedList); FillFlyPanelWith(ref pagedList); }, next); }
private void RefreshServersUiThen(Action next = null) { servers.ResetIndex(); var flatList = this.GetFilteredList(); var pagedList = GenPagedServerList(flatList); VgcApis.Misc.UI.RunInUiThread(formMain, () => { try { ClearFlyPanel(pagedList); FillFlyPanelWith(ref pagedList); } catch { } finally { next?.Invoke(); } }); }