public void CheckImageHealthOnlineSession() { using (DismSession session = DismApi.OpenOnlineSession()) { DismImageHealthState imageHealthState = DismApi.CheckImageHealth(session, scanImage: false, progressCallback: null, userData: null); imageHealthState.ShouldBe(DismImageHealthState.Healthy); } }
public void CheckImageHealthOnlineSessionWithCallback() { const string expectedUserData = "257E41FC307248608E28C3B1F8D5CF09"; string userData = null; int current = -1; int total = -1; using (DismSession session = DismApi.OpenOnlineSession()) { try { DismApi.CheckImageHealth( session: session, scanImage: true, // Setting scanImage to true seems to trigger the callback being called progressCallback: progress => { userData = progress.UserData as string; current = progress.Current; total = progress.Total; // Cancel the operation, otherwise it takes ~1 min progress.Cancel = true; }, userData: expectedUserData); } catch (OperationCanceledException) { } userData.ShouldBe(expectedUserData); current.ShouldBe(50); total.ShouldBe(1000); } }
private void cleanupOnlineImageButton_Click(object sender, EventArgs e) { DismApi.Initialize(DismLogLevel.LogErrors); Task.Factory.StartNew(() => { Task.Run(() => { if (this.InvokeRequired) { this.Invoke((MethodInvoker)(() => { loadingPanel.Visible = true; mainPanel.Enabled = false; mainPanel.Visible = false; })); } else { loadingPanel.Visible = true; mainPanel.Enabled = false; mainPanel.Visible = false; } }); // Initialize the DismApi try { List <string> sourcePath = new List <string> { @"C:\" }; using (DismSession session = DismApi.OpenOnlineSession()) { // Get the features of the image Task.Run(() => { if (this.InvokeRequired) { this.Invoke((MethodInvoker)(() => { label1.Text = "Checking Health"; })); } }); var health = DismApi.CheckImageHealth(session, false, dismProgress_action); Task.Run(() => { if (this.InvokeRequired) { this.Invoke((MethodInvoker)(() => { label1.Text = "Restoring Health"; })); } }); DismApi.RestoreImageHealth(session, true, null, dismProgress_action); } } finally { if (this.InvokeRequired) { this.Invoke((MethodInvoker)(() => { loadingPanel.Visible = false; mainPanel.Enabled = true; mainPanel.Visible = true; })); } else { loadingPanel.Visible = false; mainPanel.Enabled = true; mainPanel.Visible = true; } DismApi.Shutdown(); } }); }