bool CreateDialogForm()
        {
            if (collector.ProgressMonitorIsDisposed)
            {
                return(false);
            }

            dlg      = new AsynchronousWaitDialogForm(cancellation != null);
            dlg.Text = titleName;
            dlg.cancelButton.Click += CancelButtonClick;
            dlg.CreateControl();
            IntPtr h = dlg.Handle;             // force handle creation

            // ensure events occur on this thread, then register event handlers
            synchronizationHelper.SetTarget(dlg);
            collector.ProgressMonitorDisposed += progress_ProgressMonitorDisposed;
            collector.PropertyChanged         += progress_PropertyChanged;

            // check IsDisposed once again (we might have missed an event while we initialized the dialog):
            if (collector.ProgressMonitorIsDisposed)
            {
                dlg.Dispose();
                return(false);
            }

            progress_PropertyChanged(null, new System.ComponentModel.PropertyChangedEventArgs("TaskName"));

            return(true);
        }