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 RunWorkerCompletedEventArgs
SmsBackgroundWorker.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_ExtendedException
a 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
Aszinkron lekérdezés létrehozása.
Az SmsBackgroundWorker.QueryProcessorCompleted aszinkron lekérdezésben implementálja a kódot az alábbi példában.
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
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: