Compartir vía


Cómo controlar Configuration Manager errores asincrónicos mediante código administrado

Para controlar un error de Configuration Manager que se genera durante una consulta asincrónica, pruebe la RunWorkerCompletedEventArgs propiedad Error Exception del parámetro que se pasa al controlador de eventos SmsBackgroundWorker.QueryProcessorCompleted. Si Error no nulles , se ha producido una excepción y se usa Error para detectar la causa.

Si Error es una excepción SmsQueryException, puede usarla para llegar al subyacente __ExtendedException o SMS_ExtendedException. Dado que la biblioteca de proveedores de SMS administrada no ajusta estas excepciones, deberá usar el objeto ManagementException del espacio de nombres System.Management para acceder a ellas.

Para controlar un error de consulta asincrónica

  1. Cree una consulta asincrónica.

  2. En el controlador de eventos SmsBackgroundWorker.QueryProcessorCompleted de la consulta asincrónica, implemente el código en el ejemplo siguiente.

  3. Ejecute la consulta asincrónica. Para probar el controlador de excepciones, pase una cadena de consulta con formato incorrecto, como Select & from &&& al método QueryProcessorBase.ProcessQuery .

Ejemplo

En el ejemplo siguiente se implementa un controlador de eventos SmsBackgroundWorker.QueryProcessorCompleted .

Para obtener información sobre cómo llamar al código de ejemplo, vea Llamar a fragmentos de código de Configuration Manager.

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...");  
}  

El método de ejemplo tiene los parámetros siguientes:

Parámetro Tipo Descripción
sender - Object Origen del evento.
e - RunWorkerCompletedEventArgs Los datos del evento.

Para obtener más información, vea RunWorkerCompletedEventArgs (Clase).

Compilar el código

Este ejemplo de C# requiere:

Espacios de nombres

System

System.Collections.Generic

System.Text

Microsoft. ConfigurationManagement.ManagementProvider

Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine

System.Management

System.ComponentModel

Ensamblado

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

System.Management

Programación sólida

Para obtener más información sobre el control de errores, consulte Acerca de los errores de Configuration Manager.

Consulta también

Información de los errores