Пример #1
0
        public void CheckImageHealthOnlineSession()
        {
            using (DismSession session = DismApi.OpenOnlineSession())
            {
                DismImageHealthState imageHealthState = DismApi.CheckImageHealth(session, scanImage: false, progressCallback: null, userData: null);

                imageHealthState.ShouldBe(DismImageHealthState.Healthy);
            }
        }
Пример #2
0
        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);
            }
        }
Пример #3
0
        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();
                }
            });
        }