private void StartExport(ExportToProcess etp) { progressItems[etp.Request].Solution = etp.Solution.GetAttributeValue <string>("friendlyname"); progressItems[etp.Request].Start(); WorkAsync(new WorkAsyncInfo { Message = "", Work = (bw, evt) => { etp.IsProcessing = true; etp.SolutionContent = ((ExportSolutionResponse)etp.Detail.GetCrmServiceClient().Execute(etp.Request)) .ExportSolutionFile; }, PostWorkCallBack = evt => { etp.IsProcessed = true; etp.IsProcessing = false; if (evt.Error != null) { progressItems[etp.Request].Error(DateTime.Now); } else { progressItems[etp.Request].Success(DateTime.Now); } } }); }
private void TsbTransfertSolutionClick(object sender, EventArgs e) { if (mForm.SelectedSolutions.Count == 0 || !AdditionalConnectionDetails.Any()) { MessageBox.Show(@"You have to select a source solution and a target organization to continue.", @"Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } var solutionsToTransfer = PreparareSolutionsToTransfer(); if (solutionsToTransfer.Count == 0) { return; } var requests = new List <OrganizationRequest>(); progressItems = new Dictionary <OrganizationRequest, ProgressItem>(); toProcessList = new List <BaseToProcess>(); foreach (var solution in solutionsToTransfer) { var exportItem = new ExportToProcess { Solution = solution, Previous = toProcessList.OfType <ExportToProcess>().LastOrDefault(), Request = PrepareExportRequest(solution), Detail = sourceDetail }; toProcessList.Add(exportItem); foreach (var detail in AdditionalConnectionDetails) { toProcessList.Add(new ImportToProcess { Solution = solution, Previous = toProcessList.OfType <ImportToProcess>().LastOrDefault(x => x.Detail == detail), Export = exportItem, Request = PrepareImportRequest(detail, solution), Detail = detail }); } } if (!Settings.Instance.Managed && Settings.Instance.Publish) { foreach (var detail in AdditionalConnectionDetails) { toProcessList.Add(new PublishToProcess { Request = PreparePublishRequest(detail), Detail = detail }); } } // Add items to progress form pForm.Items = progressItems.Values.ToList(); pForm.Start(); pForm.Show(dpMain, DockState.DockRight); ToggleWaitMode(true); StartExport(toProcessList.OfType <ExportToProcess>().First()); timer.Elapsed += Timer_Elapsed; timer.Interval = Settings.Instance.RefreshIntervalProp.TotalMilliseconds; timer.Start(); }