/// <summary>
		/// This constructor provides the option of making the ProgressDialog modal.
		/// </summary>
		/// <param name="parentForm">The parent, or owning form for the ProgressDialog</param>
		/// <param name="command">The AsyncCommand c</param>
		/// <param name="progressTitleText">The title to use on the ProgressDialog</param>
		/// <param name="showModally">true if you want to use this modally, false otherwise. If you pass true, you must use ShowModal later to show the ProgressDialog</param>
		public ProgressDialogHandler(Form parentForm, BasicCommand command, string progressTitleText, bool showModally)
		{
			_parentForm = parentForm;
			_currentCommand = command;
			command.InitializeCallback = InitializeProgress;
			command.ProgressCallback = UpdateProgress;
			command.PrimaryStatusTextCallback = UpdateStatus1;
			command.SecondaryStatusTextCallback = UpdateOverview;

			_currentCommand.BeginCancel += OnCommand_BeginCancel;
			_currentCommand.EnabledChanged += OnCommand_EnabledChanged;
			_currentCommand.Error += OnCommand_Error;
			_currentCommand.Finish += OnCommand_Finish;

			_progressDialog = new ProgressDialog
								{
									Text = progressTitleText
								};
			_progressDialog.CancelRequested += _progressDialog_Cancelled;
			_progressDialog.Owner = parentForm;
			_progressDialog.CanCancel = true;
			//To use this progress in a modal way you need to call ShowModal after you have setup the ProgressDialogState
			if (!showModally)
			{
				//if it is not modal then we can show the dialog and it won't inhibit the rest of the setup and calling.
				_progressDialog.Show();
			}
		}
		/// <summary>
		/// This constructor will immediately show the ProgressDialog in a non-modal fashion.
		/// </summary>
		/// <param name="parentForm">The parent, or owning form for the ProgressDialog</param>
		/// <param name="command">The AsyncCommand c</param>
		/// <param name="progressTitleText">The title to use on the ProgressDialog</param>
		public ProgressDialogHandler(Form parentForm, BasicCommand command, string progressTitleText)
			: this(parentForm, command, progressTitleText, false)
		{
		}
		/// <summary>
		/// This constructor will immediately show the ProgressDialog in a non-modal fashion.
		/// </summary>
		/// <param name="parentForm">The parent, or owning form for the ProgressDialog</param>
		/// <param name="command">The AsyncCommand c</param>
		public ProgressDialogHandler(Form parentForm, BasicCommand command)
			: this(parentForm, command, "From Handler for: " + command.GetType())
		{
		}