Beispiel #1
0
        private void DoProgress()
        {
            var now = ProgressManager.Now;

            if (status != ProgressSettings.Status)
            {
                status = ProgressSettings.Status;
            }

            var t = TimeSpan.FromMilliseconds(now - startProgressDateTime);

            if (t > TimeSpan.FromMilliseconds(1000))
            {
                if (!Visible)
                {
                    Show(ProgramCore.MainForm);
                    ProgressManager.ProgressHWnd = Handle;
                }
                if (Visible)
                {
                    try
                    {
                        status         = ProgressSettings.Status;
                        percentDone    = (int)ProgressSettings.PercentDone;
                        subPercentDone = (int)ProgressSettings.SubPercentDone;
                        subStatus      = ProgressSettings.SubStatus;
                        if (ProgressSettings.PercentDone > 0)
                        {
                            var tt = new TimeSpan((long)(100 * t.Ticks / ProgressSettings.PercentDone)); //totalTime
                            if (previousTotalTime - TimeSpan.FromMilliseconds(5000) < tt && tt < previousTotalTime + TimeSpan.FromMilliseconds(5000))
                            {
                                tt = previousTotalTime;
                            }
                            previousTotalTime = tt;
                            var rt = tt - t; //remaingingTime
                            remainedTimeLabel.Text = @"Time elapsed: " +
                                                     (Math.Round(t.TotalDays) != 0 ? StringConverter.DaysToStr((int)Math.Round(t.TotalDays)) : "") +
                                                     (t.Hours != 0 ? StringConverter.HoursToStr(t.Hours) : "") +
                                                     (t.Minutes != 0 ? StringConverter.MinutesToStr(t.Minutes) : "") +
                                                     (t.Seconds != 0 || t.TotalSeconds < 1 ? t.Seconds.SecondsToStr() : "") +
                                                     ((rt <= TimeSpan.FromMilliseconds(0)) ? "" :
                                                      ".Remaining time: " +
                                                      (Math.Round(rt.TotalDays) != 0 ? StringConverter.DaysToStr((int)Math.Round(rt.TotalDays)) : "") +
                                                      (rt.Hours != 0 ? StringConverter.HoursToStr(rt.Hours) : "") +
                                                      (rt.Minutes != 0 ? StringConverter.MinutesToStr(rt.Minutes) : "") +
                                                      (rt.Seconds != 0 || rt.TotalSeconds < 1 ? rt.Seconds.SecondsToStr() : ""));
                        }
                        else
                        {
                            remainedTimeLabel.Text = "";
                        }
                    }
                    catch
                    {
                        remainedTimeLabel.Text = "";
                    }
                }

                if (Visible)
                {
                    UpdateFormStyle();
                }
            }
        }