Partilhar via


Como Lidar com Erros Assíncronos do Configuration Manager ao Utilizar o Código Gerido

Para lidar com um erro do Gestor de Configuração que é levantado durante uma consulta assíncronea, testa a RunWorkerCompletedEventArgs propriedade De exceção de erro de parâmetro que é transmitida para o manipulador de eventos SmsBackgroundWorker.QueryProcessorCompleted. Se o Erro não null for, ocorreu uma exceção e utiliza-se o Erro para descobrir a causa.

Se O Erro for um SmsQueryException,pode usá-lo para chegar ao subjacente ou __ExtendedException SMS_ExtendedException . Como a biblioteca de fornecedores de SMS gerida não encerra estas exceções, terá de utilizar o objeto System.Managementspace ManagementException para aceder às mesmos.

Para lidar com um erro de consulta assíncronos

  1. Crie uma consulta assíncronea.

  2. Na consulta assíncronea SmsBackgroundWorker.QueryProcessorCompleted event handler, implemente o código no seguinte exemplo.

  3. Executar a consulta assíncronos. Para testar o manipulador de exceções, passe uma cadeia de consulta mal formada, como Select & from &&& o método QueryProcessorBase.ProcessQuery.

Exemplo

O exemplo a seguir implementa um manipulador de eventos SmsBackgroundWorker.QueryProcessorCompleted.

Para obter informações sobre a chamada do código de amostra, consulte o Código de Identificação do Gestor de Chamadas.

void bw1_QueryProcessorCompleted(object sender, RunWorkerCompletedEventArgs e)  
{  
    if (e.Error != null)  
    {  
        Console.WriteLine("There was an Error");  
        if (e.Error is SmsQueryException)  
        {  
            SmsQueryException queryException = (SmsQueryException)e.Error;  
            Console.WriteLine(queryException.Message);  

            // Get either the __ExtendedStatus or SMS_ExtendedStatus object and display various properties.  
            ManagementException mgmtExcept = queryException.InnerException as ManagementException;  

            if (mgmtExcept != null)  
            {  
                if (string.Equals(mgmtExcept.ErrorInformation.ClassPath.ToString(), "SMS_ExtendedStatus", StringComparison.OrdinalIgnoreCase) == true)  
                {  
                    Console.WriteLine("Configuration Manager provider exception");  
                }  

                else if (string.Equals(mgmtExcept.ErrorInformation.ClassPath.ToString(), "__ExtendedStatus", StringComparison.OrdinalIgnoreCase) == true)  
                {  
                    Console.WriteLine("WMI exception");  
                }  
                Console.WriteLine(mgmtExcept.ErrorCode.ToString());  
                Console.WriteLine(mgmtExcept.ErrorInformation["ParameterInfo"].ToString());  
                Console.WriteLine(mgmtExcept.ErrorInformation["Operation"].ToString());  
                Console.WriteLine(mgmtExcept.ErrorInformation["ProviderName"].ToString());  
            }  

        }  
        if (e.Error is SmsConnectionException)  
        {  
            Console.WriteLine("There was a connection error :" + ((SmsConnectionException)e.Error).Message);  
            Console.WriteLine(((SmsConnectionException)e.Error).ErrorCode);  
        }  
    }  

    Console.WriteLine("Done...");  
}  

O método exemplo tem os seguintes parâmetros:

Parâmetro Tipo Description
sender - Object A origem do evento.
e - RunWorkerCompletedEventArgs Os dados do evento.

Para mais informações, consulte a Classe RunWorkerCompletedEventArgs.

A Compilar o Código

Este exemplo C# requer:

Espaços de nomes

Sistema

System.Collections.Generic

System.Text

Microsoft.ConfigurationManagement.ManagementProvider

Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine

Sistema.Gestão

System.ComponentModel

Assemblagem

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

Sistema.Gestão

Programação Robusta

Para obter mais informações sobre o tratamento de erros, consulte Sobre erros do Gestor de Configuração.

Consulte também

About errors (Acerca dos erros)