public OpenLiveWriter.CoreServices.AsyncOperation CreateOperation(IBlogClientUIContext uiContext, Control hiddenBrowserParentControl, TemporaryBlogSettings temporarySettings) { // save references _uiContext = uiContext; _temporarySettings = temporarySettings; // create operation _hostOperation = new MultipartAsyncOperation(uiContext); _hostOperation.AddProgressOperation(new ProgressOperation(DetectWeblogSettings), 50); _blogEditingTemplateDetector = new BlogEditingTemplateDetector(_uiContext, hiddenBrowserParentControl, temporarySettings, false); _hostOperation.AddProgressOperation(new ProgressOperation(_blogEditingTemplateDetector.DetectTemplate), 50); return(_hostOperation); }
public static DialogResult ExecuteWithProgress(string title, ProgressOperation operation, ISynchronizeInvoke synchronizeInvoke, IWin32Window owner) { using (ProgressDialog progress = new ProgressDialog()) { progress.Text = title; MultipartAsyncOperation async = new MultipartAsyncOperation(synchronizeInvoke); async.AddProgressOperation(operation, new ProgressCategory(null, null), 100); progress.ProgressProvider = async; async.Start(); DialogResult result; if (!async.IsDone) { result = progress.ShowDialog(owner); } else { result = progress.DialogResult; } if (result == DialogResult.Cancel) { throw new OperationCancelledException(); } else if (result == DialogResult.Abort) { throw async.Exception; } else { return(result); } } }