private void PushApp() { Messenger.Default.Send(new NotificationMessageAction <bool>(Messages.PushApp, (confirmed) => { if (confirmed) { PushViewModel viewModel = null; Messenger.Default.Send(new NotificationMessageAction <PushViewModel>(Messages.GetPushAppData, vm => viewModel = vm)); var worker = new BackgroundWorker { WorkerReportsProgress = true }; SetProgressTitle("Push Application"); worker.ProgressChanged += WorkerProgressChanged; worker.DoWork += (s, e) => { worker.ReportProgress(10, "Pushing Application: " + viewModel.Name); var result = provider.Push(viewModel.SelectedCloud, viewModel.Name, viewModel.Url, Convert.ToUInt16(viewModel.Instances), viewModel.PushFromDirectory, Convert.ToUInt32(viewModel.SelectedMemory), viewModel.ApplicationServices.Select(provisionedService => provisionedService.Name).ToArray()); if (!result.Response) { worker.ReportProgress(-1, result.Message); return; } var appResult = provider.GetApplication(new Application() { Name = viewModel.Name }, viewModel.SelectedCloud); if (appResult.Response == null) { worker.ReportProgress(-1, appResult.Message); return; } e.Result = appResult.Response; }; worker.RunWorkerCompleted += (s, e) => { var result = e.Result as Application; var cloud = provider.Clouds.SingleOrDefault((c) => c.ID == viewModel.SelectedCloud.ID); if (result != null) { cloud.Applications.Add(result); } Messenger.Default.Send(new ProgressMessage(100, "Application Pushed.")); }; worker.RunWorkerAsync(); Messenger.Default.Send(new NotificationMessageAction <bool>(Messages.Progress, c => { })); } })); }
private void SelectedApplicationPropertyChanged(object sender, PropertyChangedEventArgs e) { ApplicationErrorMessage = String.Empty; var worker = new BackgroundWorker(); worker.DoWork += (s, args) => { ProviderResponse <bool> result = provider.UpdateApplication(SelectedApplication, Cloud); if (!result.Response) { dispatcher.BeginInvoke((Action)(() => ApplicationErrorMessage = result.Message)); return; } ProviderResponse <Application> appResult = provider.GetApplication(SelectedApplication, Cloud); if (appResult.Response == null) { dispatcher.BeginInvoke((Action)(() => ApplicationErrorMessage = appResult.Message)); return; } args.Result = appResult.Response; }; worker.RunWorkerCompleted += (s, args) => { var result = args.Result as Application; if (result != null) { RefreshSelectedApplication(result); } }; worker.RunWorkerAsync(); }