private void OkBtn_Click(object sender, EventArgs e)
        {
            UserSelectedProjectSettings SelectedProject;

            if (TryGetSelectedProject(out SelectedProject))
            {
                DetectProjectSettingsTask NewDetectedProjectSettings = new DetectProjectSettingsTask(SelectedProject, DataFolder, CacheFolder, Log);
                try
                {
                    string ErrorMessage;
                    if (PerforceModalTask.Execute(this, Perforce, NewDetectedProjectSettings, "Opening Project", "Opening project, please wait...", Log, out ErrorMessage) != ModalTaskResult.Succeeded)
                    {
                        if (!String.IsNullOrEmpty(ErrorMessage))
                        {
                            MessageBox.Show(ErrorMessage);
                        }
                        return;
                    }

                    DetectedProjectSettings    = NewDetectedProjectSettings;
                    NewDetectedProjectSettings = null;
                    DialogResult = DialogResult.OK;
                    Close();
                }
                finally
                {
                    if (NewDetectedProjectSettings != null)
                    {
                        NewDetectedProjectSettings.Dispose();
                        NewDetectedProjectSettings = null;
                    }
                }
            }
        }
 public void Dispose()
 {
     if (Task != null)
     {
         Task.Dispose();
         Task = null;
     }
 }