private void CreateProject_UEFXML_CreateProjectButton_Click(object sender, EventArgs e) { using (var dialog = DialogEx.SelectFolder()) { var result = dialog.ShowDialog(); if (result == CommonFileDialogResult.Ok) { var projectPath = dialog.FileName; if (Directory.GetFiles(projectPath, "*", SearchOption.AllDirectories).Length > 0) { MessageBox.Show("Directory must be empty.", "Error"); return; } Task.Factory.StartNew(() => { try { using (var progress = _progressFactory.NewInstance("Creating and saving project...")) { var project = WsdProject.CreateAndSave( _projectCreateInfoUEFXML, projectPath, progress); this.InvokeIfRequired(() => { RefreshUI(); AddProjectTab(project); }); } } catch (OperationCanceledException) { this.InvokeIfRequired(RefreshUI); } catch (Exception ex) { MessageBox.Show(ex.ToString(), "Error"); } }, TaskCreationOptions.LongRunning); } } }