Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        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();
                }
            });
        }