Ejemplo n.º 1
0
        private static void UpdateProgress()
        {
            ProgressBar.Invoke(new InvokeDelegate(SetProgressBarValue), (int)((double)Status.CurrentProgress * 10000 / Status.TotalProgress));

            if (Status.TotalProgress > 0)
            {
                ProgressLabel.Invoke(new InvokeDelegate(SetProgressLabel), string.Format("{0}/{1}", Status.CurrentProgress, Status.TotalProgress));
                PercentageLabel.Invoke(new InvokeDelegate(SetPercentageLabel), string.Format("{0:0.##}%", (double)Status.CurrentProgress * 100 / Status.TotalProgress));

                TimeUsageLabel.Invoke(new InvokeDelegate(SetTimeUsageLabel), "已用时间:" + TimeSpan.FromMilliseconds(Timer.ElapsedMilliseconds).ToString(@"hh\:mm\:ss\.fff"));

                var time = (double)Timer.ElapsedMilliseconds * (Status.TotalProgress - Status.CurrentProgress) / Status.CurrentProgress;
                if (time.HasValue())
                {
                    TimeEstimationLabel.Invoke(new InvokeDelegate(SetTimeEstimationLabel), "估计剩余时间:" + TimeSpan.FromMilliseconds(time).ToString(@"hh\:mm\:ss\.fff"));
                }
                else
                {
                    TimeEstimationLabel.Invoke(new InvokeDelegate(SetTimeEstimationLabel), "等待开始");
                }
            }
            else
            {
                StatusLabel.Invoke(new InvokeDelegate(SetStatusLabel), Status.CurrentStatus);
                ProgressLabel.Invoke(new InvokeDelegate(SetProgressLabel), "等待开始");
                PercentageLabel.Invoke(new InvokeDelegate(SetPercentageLabel), "等待开始");
                TimeUsageLabel.Invoke(new InvokeDelegate(SetTimeUsageLabel), "等待开始");
                TimeEstimationLabel.Invoke(new InvokeDelegate(SetTimeEstimationLabel), "等待开始");
            }
        }
Ejemplo n.º 2
0
        public static void RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            StatusLabel.Invoke(new InvokeDelegate(SetStatusLabel), "等待开始");
            ProgressLabel.Invoke(new InvokeDelegate(SetProgressLabel), "等待开始");
            PercentageLabel.Invoke(new InvokeDelegate(SetPercentageLabel), "等待开始");
            TimeUsageLabel.Invoke(new InvokeDelegate(SetTimeUsageLabel), "等待开始");
            TimeEstimationLabel.Invoke(new InvokeDelegate(SetTimeEstimationLabel), "等待开始");

            ProgressBar.Invoke(new InvokeDelegate(SetProgressBarValue), 0);
            //ProgressBar.Invoke(new InvokeDelegate(SetProgressBarMaximum), 100);

            //Console.WriteLine("Worker Reset");
            WorkerInBusy.Set();
        }
Ejemplo n.º 3
0
 public SplashScreen()
 {
     Instance = this;
     InitializeComponent();
     this.Load += (s, a) =>
     {
         List <bool> bools = new List <bool>();
         bools.AddRange(new bool[] { false, false, false });
         ProgressWorker.WorkerReportsProgress = true;
         ProgressWorker.DoWork += (_, e) =>
         {
             for (int i = 0; i < 103; i++)
             {
                 Thread.Sleep(50);
                 ProgressWorker.ReportProgress(i);
                 if (i < 30)
                 {
                     ProgressLabel.Invoke((MethodInvoker) delegate {
                         ProgressLabel.Text = $"Loading Sales {i}%";
                     });
                 }
                 if (i > 30 && i < 60)
                 {
                     ProgressLabel.Invoke((MethodInvoker) delegate {
                         ProgressLabel.Text = $"Initializing Accounts {i}%";
                     });
                     if (!bools[0])
                     {
                         bools[0] = true;
                         Accounts.InitializeDatabase();
                     }
                 }
                 if (i > 60 && i < 90)
                 {
                     ProgressLabel.Invoke((MethodInvoker) delegate {
                         ProgressLabel.Text = $"Getting Accounts {i}%";
                     });
                     if (!bools[1])
                     {
                         bools[1] = true;
                         Accounts.GetAllAccounts();
                     }
                 }
                 if (i > 90 && i < 101)
                 {
                     Thread.Sleep(250);
                     ProgressLabel.Invoke((MethodInvoker) delegate
                     {
                         ProgressLabel.Text = $"Loading Main Form {i}%";
                     });
                     if (!bools[2])
                     {
                         bools[2] = true;
                         this.Invoke((MethodInvoker) delegate
                         {
                             MainForm.Instance.InitializeMainForm();
                         });
                     }
                 }
                 if (i >= 101)
                 {
                     ProgressLabel.Invoke((MethodInvoker) delegate {
                         ProgressLabel.Text = $"Welcome to Windows 11";
                     });
                     Thread.Sleep(1000);
                 }
             }
         };
         ProgressWorker.ProgressChanged += (_, e) =>
         {
             ProgressLoader.Value = e.ProgressPercentage;
             DummyProgress.Value  = e.ProgressPercentage;
         };
         ProgressWorker.RunWorkerCompleted += (_, e) =>
         {
             this.Hide();
             MainForm.Instance.Show();
         };
         ProgressWorker.RunWorkerAsync();
     };
 }