Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Om du vill hantera ett Configuration Manager fel som utlöses under en asynkron fråga testar RunWorkerCompletedEventArgs du parameterfelundantagsegenskapen som skickas till händelsehanteraren SmsBackgroundWorker.QueryProcessorCompleted. Om "Fel " inte nullär angetts har ett undantag uppstått och du använder "Fel" för att identifiera orsaken.
Om Fel är ett SmsQueryException kan du använda det för att komma åt den underliggande __ExtendedException eller SMS_ExtendedException. Eftersom det hanterade SMS-providerbiblioteket inte omsluter dessa undantag måste du använda namnområdet System.Management ManagementException för att komma åt dem.
Så här hanterar du ett asynkront frågefel
Skapa en asynkron fråga.
I den asynkrona frågehändelsehanteraren SmsBackgroundWorker.QueryProcessorCompleted implementerar du koden i följande exempel.
Kör den asynkrona frågan. Om du vill testa undantagshanteraren skickar du en felaktigt formaterad frågesträng, till
Select & from &&&exempel till metoden QueryProcessorBase.ProcessQuery .
Exempel
I följande exempel implementeras en SmsBackgroundWorker.QueryProcessorCompleted-händelsehanterare .
Information om hur du anropar exempelkoden finns i Anropa Configuration Manager kodfragment.
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...");
}
Exempelmetoden har följande parametrar:
| Parameter | Typ | Beskrivning |
|---|---|---|
sender |
- Object |
Källan till händelsen. |
e |
- RunWorkerCompletedEventArgs |
Händelsedata. Mer information finns i RunWorkerCompletedEventArgs klass. |
Kompilerar koden
Det här C#-exemplet kräver:
Namnområden
System
System.Collections.Generic
System.Text
Microsoft.ConfigurationManagement.ManagementProvider
Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine
System.Management
System.ComponentModel
Montering
Microsoft.ConfigurationManagement.ManagementProvider
adminui.wqlqueryengine
System.Management
Robust programmering
Mer information om felhantering finns i Om Configuration Manager fel.