public void AddMultipleUpdates(List <Device> devices)
        {
            try
            {
                Waiting();
                foreach (var device in devices)
                {
                    if (!Exists(device))
                    {
                        var newProgCtl = new FileTransferUI(this, device, createMissingDirs, Paths.GKExtractDir, Paths.GKRemoteDir, "Gatekeeper Update", progressControls.Count + 1);
                        progressControls.Add(newProgCtl);
                        newProgCtl.CriticalStopError += CriticalStop;
                    }
                }

                ProgressControlsTable.SuspendLayout();
                this.SuspendLayout();

                ProgressControlsTable.Controls.AddRange(progressControls.ToArray());

                ProgressControlsTable.ResumeLayout();
                this.ResumeLayout();

                ProcessUpdates();
                this.Show();
                this.WindowState = FormWindowState.Normal;
                this.Activate();
            }
            finally
            {
                DoneWaiting();
            }
        }
 public GKUpdaterForm(ExtendedForm parentForm) : base(parentForm)
 {
     InitializeComponent();
     this.DisableDoubleBuffering();
     MaxUpdates.Value = concurrentUpdates;
     ProgressControlsTable.DoubleBuffered(true);
     DoQueueCheckerLoop();
 }