Behandeln von Configuration Manager asynchronen Fehlern mithilfe von verwaltetem Code

Um einen Configuration Manager Fehler zu behandeln, der während einer asynchronen Abfrage ausgelöst wird, testen Sie den RunWorkerCompletedEventArgsParameter Error Exception-Eigenschaft, der an den SmsBackgroundWorker.QueryProcessorCompleted-Ereignishandler übergeben wird. Wenn Error nicht nullist, ist eine Ausnahme aufgetreten, und Sie verwenden Fehler , um die Ursache zu ermitteln.

Wenn Error eine SmsQueryException ist, können Sie sie verwenden, um auf die zugrunde liegende __ExtendedException oder SMS_ExtendedExceptionzu gelangen. Da die verwaltete SMS-Anbieterbibliothek diese Ausnahmen nicht umschließt, müssen Sie das System.ManagementException-Namespaceobjekt verwenden, um darauf zuzugreifen.

So behandeln Sie einen asynchronen Abfragefehler

  1. Erstellen Sie eine asynchrone Abfrage.

  2. Implementieren Sie im asynchronen Abfrageereignishandler SmsBackgroundWorker.QueryProcessorCompleted den Code im folgenden Beispiel.

  3. Führen Sie die asynchrone Abfrage aus. Um den Ausnahmehandler zu testen, übergeben Sie eine falsch formatierte Abfragezeichenfolge, Select & from &&& z. B. an die QueryProcessorBase.ProcessQuery-Methode .

Beispiel

Im folgenden Beispiel wird ein SmsBackgroundWorker.QueryProcessorCompleted-Ereignishandler implementiert.

Informationen zum Aufrufen des Beispielcodes finden Sie unter Aufrufen von Configuration Manager Codeausschnitten.

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

Die Beispielmethode verfügt über die folgenden Parameter:

Parameter Typ Beschreibung
sender - Object Die Quelle des Ereignisses.
e - RunWorkerCompletedEventArgs Die Ereignisdaten.

Weitere Informationen finden Sie unter RunWorkerCompletedEventArgs-Klasse.

Kompilieren des Codes

Für dieses C#-Beispiel ist Folgendes erforderlich:

Namespaces

System

System.Collections.Generic

System.Text

Microsoft. ConfigurationManagement.ManagementProvider

Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine

System.Management

System.ComponentModel

Assembly

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

System.Management

Robuste Programmierung

Weitere Informationen zur Fehlerbehandlung finden Sie unter Informationen zu Configuration Manager Fehlern.

Siehe auch

Informationen zu Fehlern