Zpracování asynchronních chyb Configuration Manager pomocí spravovaného kódu
Chcete-li zpracovat chybu Configuration Manager, která je vyvolána během asynchronního dotazu, otestujte RunWorkerCompletedEventArgs
parametr Error Exception vlastnost, která je předána SmsBackgroundWorker.QueryProcessorCompleted obslužné rutině události. Pokud chyba není null
, došlo k výjimce a pomocí funkce Chyba zjistíte příčinu.
Pokud je Chybavýjimka SmsQueryException, můžete ji použít k získání základní __ExtendedException
SMS_ExtendedException
nebo . Vzhledem k tomu, že spravovaná knihovna poskytovatele serveru SMS nezabalí tyto výjimky, budete muset pro přístup k nim použít objekt System.Management oboru názvů ManagementException .
Zpracování chyby asynchronního dotazu
Vytvořte asynchronní dotaz.
V obslužné rutině události asynchronního dotazu SmsBackgroundWorker.QueryProcessorCompleted implementujte kód v následujícím příkladu.
Spusťte asynchronní dotaz. Chcete-li otestovat obslužnou rutinu výjimky, předejte chybně formátovaný řetězec dotazu, například
Select & from &&&
QueryProcessorBase.ProcessQuery metoda.
Příklad
Následující příklad implementuje obslužnou rutinu události SmsBackgroundWorker.QueryProcessorCompleted .
Informace o volání ukázkového kódu najdete v tématu Volání Configuration Manager fragmentů kódu.
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...");
}
Ukázková metoda má následující parametry:
Parametr | Typ | Popis |
---|---|---|
sender |
- Object |
Zdroj události. |
e |
- RunWorkerCompletedEventArgs |
Data události. Další informace najdete v tématu RunWorkerCompletedEventArgs – třída. |
Kompilace kódu
Tento příklad jazyka C# vyžaduje:
Obory názvů
Systému
System.collections.generic
System.text
Microsoft. ConfigurationManagement.ManagementProvider
Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine
System.management
System.componentmodel
Sestavení
microsoft.configurationmanagement.managementprovider
adminui.wqlqueryengine
System.management
Robustní programování
Další informace o zpracování chyb najdete v tématu Informace o chybách Configuration Manager.