/// <summary> /// Installation of image is complete (or failed) /// </summary> private void ProcessInstallImage(Task downloadTask, SdkSystemImage image, string path) { if (downloadTask.Exception != null) { SuspendLayout(); progress.Visible = false; lbProgress.Visible = false; ResumeLayout(true); UpdateControlState(); // Show error var msg = string.Format("Failed to install system image because {0}", downloadTask.Exception.Message); MessageBoxEx.Show(msg, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error); } else { // We're done Done.Fire(this); } }
/// <summary> /// Download image is complete (or failed) /// </summary> private void ProcessDownloadImage(Task downloadTask, SdkSystemImage image, string path) { if (downloadTask.Exception != null) { SuspendLayout(); progress.Visible = false; lbProgress.Visible = false; ResumeLayout(true); UpdateControlState(); // Show error var msg = string.Format("Failed to download system image because {0}", downloadTask.Exception.Message); MessageBoxEx.Show(msg, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error); } else { // Install image lbProgress.Text = string.Format("Installing {0}...", image.Description); var ui = TaskScheduler.FromCurrentSynchronizationContext(); var task = Task.Factory.StartNew(() => SystemImages.Instance.Install(image, path)); task.ContinueWith(x => ProcessInstallImage(x, image, path), ui); } }