public void Push(MirrorOperation operation)
        {
            if (operation == null)
            {
                throw new ArgumentNullException("operation");
            }

            var control = new MirrorOperationControl(operation)
            {
                Dock = DockStyle.Top
            };

            panel.Controls.Add(control);
            control.BringToFront();

            control.Aborted    += (s, e) => { RemoveControl(control); };
            operation.Finished += (s, e) =>
            {
                RemoveControl(control);

                if (!OperationControls.Any())
                {
                    if (AllFinished != null)
                    {
                        AllFinished(this, EventArgs.Empty);
                    }
                }
                else
                {
                    TriggerNextOperation();
                }
            };

            TriggerNextOperation();
        }
 private void RemoveControl(MirrorOperationControl control)
 {
     if (panel.Controls.Contains(control))
     {
         panel.Controls.Remove(control);
     }
 }
 public Status(MirrorOperationControl control)
 {
     _control = control;
 }