private void OpenProjectButton_Click(object sender, EventArgs e) { using (var dialog = DialogEx.OpenFile("WsdProject files (*.wsdproj)|*.wsdproj")) { var result = dialog.ShowDialog(); if (result == DialogResult.OK) { var projectFile = dialog.FileName; Task.Factory.StartNew(() => { try { using (var progress = _progressFactory.NewInstance("Loading project...")) { var project = WsdProject.Load(projectFile, progress); this.InvokeIfRequired(() => { RefreshUI(); AddProjectTab(project); }); } } catch (OperationCanceledException) { this.InvokeIfRequired(RefreshUI); } catch (Exception ex) { MessageBox.Show(ex.ToString(), "Error"); } }, TaskCreationOptions.LongRunning); } } }