public MultiTaskDialogProgressMonitor(bool showProgress, bool allowCancel, bool showDetails, IDictionary <string, string> taskLabelAliases) : base(Runtime.MainSynchronizationContext)
 {
     if (showProgress)
     {
         var parent = DesktopService.GetParentForModalWindow();
         dialog = new MultiTaskProgressDialog(allowCancel, showDetails, taskLabelAliases)
         {
             DestroyWithParent = true,
             Modal             = true,
             TransientFor      = parent,
         };
         MessageService.PlaceDialog(dialog, parent);
         GtkWorkarounds.PresentWindowWithNotification(dialog);
         dialog.CancellationTokenSource = CancellationTokenSource;
         DispatchService.RunPendingEvents();
         this.showDetails = showDetails;
     }
 }