private void Worker_RunWorkerCompleted(object?sender, RunWorkerCompletedEventArgs e)
        {
            LOG.Debug($"{nameof( Worker_RunWorkerCompleted )} - Elapsed Time: {DateTime.Now - _start}");

            ElapsedUpdateTimer.Stop();

            if (e.Error != null)
            {
                LogOutput(Environment.NewLine + $"An error occurred while running the tasks:{Environment.NewLine}{e.Error}", Color.Red);
                this.ProgressBar.SetState(Native.ProgressBarState.Error);
            }

            if (!_cancel)
            {
                LogOutput(Environment.NewLine + this.CompletedText, CompletedTextColor);
            }
            else
            {
                LogOutput(Environment.NewLine + "Cancelled", CancelledTextColor);
            }
            Cancel.Text    = "Close";
            Cancel.Enabled = true;

            this.Completed = true;
            OnProgressCompleted(EventArgs.Empty);
        }
        public void DoProgress()
        {
            if (_started)
            {
                throw new InvalidOperationException("Progress has already been started");
            }

            if (!this.IsHandleCreated)
            {
                this.CreateHandle();
            }

            if (!_cancel)
            {
                _started = true;
                _start   = DateTime.Now;
                ElapsedUpdateTimer.Start();
                Worker.RunWorkerAsync();
            }
        }