Megosztás a következőn keresztül:


Configuration Manager aszinkron hibák kezelése felügyelt kód használatával

Az aszinkron lekérdezés során keletkező Configuration Manager hiba kezeléséhez tesztelje az RunWorkerCompletedEventArgsSmsBackgroundWorker.QueryProcessorCompleted eseménykezelőnek átadott Error Exception tulajdonságot. Ha a Hiba nem null, kivétel történt, és az Ok felderítéséhez használja az Error függvényt.

Ha az Erroregy SmsQueryException kivétel, akkor a használatával elérheti a mögöttes vagy SMS_ExtendedExceptiona metódust__ExtendedException. Mivel a felügyelt SMS-szolgáltató kódtára nem burkolja ezeket a kivételeket, a System.Management névtér ManagementException objektumával kell elérnie őket.

Aszinkron lekérdezési hiba kezelése

  1. Aszinkron lekérdezés létrehozása.

  2. Az SmsBackgroundWorker.QueryProcessorCompleted aszinkron lekérdezésben implementálja a kódot az alábbi példában.

  3. Futtassa az aszinkron lekérdezést. A kivételkezelő teszteléséhez adjon át egy rosszul formázott lekérdezési sztringet, például Select & from &&& a QueryProcessorBase.ProcessQuery metódusnak.

Példa

Az alábbi példa egy SmsBackgroundWorker.QueryProcessorCompleted eseménykezelőt implementál .

A mintakód meghívásával kapcsolatos információkért lásd: Configuration Manager Kódrészletek hívása.

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

A példametódus a következő paraméterekkel rendelkezik:

Paraméter Típus Leírás
sender - Object Az esemény forrása.
e - RunWorkerCompletedEventArgs Az eseményadatok.

További információ: RunWorkerCompletedEventArgs osztály.

A kód fordítása

Ehhez a C#-példához a következőre van szükség:

Névterek

Rendszer

System.Collections.Generic

System.Text

Microsoft. ConfigurationManagement.ManagementProvider

Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine

System.Management

System.ComponentModel

Összeszerelés

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

System.Management

Robusztus programozás

A hibakezeléssel kapcsolatos további információkért lásd: A Configuration Manager hibák ismertetése.

Lásd még

Tudnivalók a hibákról