Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Para lidar com um erro do Configuration Manager gerado durante uma consulta assíncrona, teste a RunWorkerCompletedEventArgs propriedade Error Exception do parâmetro que é passada para o manipulador de eventos SmsBackgroundWorker.QueryProcessorCompleted. Se o erro não nullfor, ocorreu uma exceção e você usará o erro para descobrir a causa.
Se Error for um SmsQueryException, você poderá usá-lo para acessar o ou SMS_ExtendedExceptionsubjacente__ExtendedException. Como a biblioteca do provedor SMS gerenciado não encapsula essas exceções, você precisará usar o objeto System.Management, namespace ManagementException , para acessá-las.
Para lidar com um erro de consulta assíncrona
Crie uma consulta assíncrona.
No manipulador de eventos de consulta assíncrona SmsBackgroundWorker.QueryProcessorCompleted , implemente o código no exemplo a seguir.
Execute a consulta assíncrona. Para testar o manipulador de exceção, passe uma cadeia de caracteres de consulta mal formada, como
Select & from &&&o método QueryProcessorBase.ProcessQuery .
Exemplo
O exemplo a seguir implementa um manipulador de eventos SmsBackgroundWorker.QueryProcessorCompleted .
Para obter informações sobre como chamar o código de exemplo, consulte Chamando trechos de código do 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...");
}
O método de exemplo tem os seguintes parâmetros:
| Parâmetro | Tipo | Descrição |
|---|---|---|
sender |
- Object |
A origem do evento. |
e |
- RunWorkerCompletedEventArgs |
Os dados do evento. Para obter mais informações, consulte RunWorkerCompletedEventArgs Class. |
Compilando o código
Este exemplo do C# exige:
Namespaces
System
System.Collections.Generic
System.Text
Microsoft.ConfigurationManagement.ManagementProvider
Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine
System.Management
System.ComponentModel
Assembly
Microsoft.ConfigurationManagement.ManagementProvider
adminui.wqlqueryengine
System.Management
Programação robusta
Para obter mais informações sobre o tratamento de erros, consulte Sobre erros do Configuration Manager.