Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Per gestire un errore di Configuration Manager generato durante una query asincrona, testare la RunWorkerCompletedEventArgs proprietà Error Exception del parametro passata al gestore eventi SmsBackgroundWorker.QueryProcessorCompleted. Se l'errore non nullè , si è verificata un'eccezione e usare Errore per individuare la causa.
Se Error è un'eccezione SmsQueryException, è possibile utilizzarla per accedere al metodo sottostante __ExtendedException o SMS_ExtendedException. Poiché la libreria del provider SMS gestito non esegue il wrapping di queste eccezioni, sarà necessario utilizzare l'oggetto ManagementException dello spazio dei nomi System.Management per accedervi.
Per gestire un errore di query asincrona
Creare una query asincrona.
Nel gestore eventi di query asincrona SmsBackgroundWorker.QueryProcessorCompleted implementa il codice nell'esempio seguente.
Eseguire la query asincrona. Per testare il gestore eccezioni, passare una stringa di query con formato non corretto, ad esempio
Select & from &&&al metodo QueryProcessorBase.ProcessQuery .
Esempio
L'esempio seguente implementa un gestore eventi SmsBackgroundWorker.QueryProcessorCompleted .
Per informazioni sulla chiamata del codice di esempio, vedere Chiamata di frammenti di codice di Configuration Manager.
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...");
}
Il metodo di esempio include i parametri seguenti:
| Parametro | Tipo | Descrizione |
|---|---|---|
sender |
- Object |
Origine dell'evento. |
e |
- RunWorkerCompletedEventArgs |
Dati sull'evento. Per altre informazioni, vedere Classe RunWorkerCompletedEventArgs. |
Compilazione del codice
Questo esempio di C# richiede:
Spazi dei nomi
Sistema
System.Collections.Generic
System.Text
Microsoft.ConfigurationManagementManagementProvider
Microsoft.ConfigurationManagementManagementProvider.WqlQueryEngine
System.Management
System.ComponentModel
Assembly
Microsoft.ConfigurationManagement.ManagementProvider
adminui.wqlqueryengine
System.Management
Programmazione efficiente
Per altre informazioni sulla gestione degli errori, vedere Informazioni sugli errori di Configuration Manager.