Пример #1
0
        private void LoadPage_DoWork(object sender, DoWorkEventArgs e)
        {
            BeginInvoke(new MethodInvoker(delegate
            {
                progressBar.Visible   = true;
                progressBar.Value     = 0;
                label1.Text           = (pageIndex + 1) + "/" + pages;
                panelPage.Visible     = true;
                button1.Enabled       = false;
                button2.Enabled       = false;
                button_search.Enabled = false;
            }));

            var animes = animeEntries.Skip(pageIndex * entriesPerPage).Take(entriesPerPage);

            LoadPage.ReportProgress(10);

            BeginInvoke(new MethodInvoker(delegate
            {
                panelEntry.Controls.Clear();
            }));

            float progress = 10;
            float step     = 90f / animes.Count();

            foreach (var a in animes)
            {
                AnimeEntry entry = new AnimeEntry(a);
                entry.Dock = DockStyle.Top;

                BeginInvoke(new MethodInvoker(delegate
                {
                    entry.Visible = false;
                    panelEntry.Controls.Add(entry);
                    entry.BringToFront();  // entry.BringToFront(); - to add controls in correct order
                    entry.Visible = true;
                }));
                System.Threading.Thread.Sleep(100);

                progress += step;
                LoadPage.ReportProgress((int)progress);
            }

            BeginInvoke(new MethodInvoker(delegate
            {
                progressBar.Visible   = false;
                button1.Enabled       = true;
                button2.Enabled       = true;
                button_search.Enabled = true;
            }));
        }