Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Чтобы обработать ошибку Configuration Manager, которая возникает во время асинхронного запроса, проверьте RunWorkerCompletedEventArgs
свойство Error Exception параметра, переданное обработчику событий SmsBackgroundWorker.QueryProcessorCompleted. Если значение Error не null
равно , возникло исключение, и для обнаружения причины используется ошибка .
Если ошибка — это SmsQueryException, его можно использовать для получения базового __ExtendedException
объекта или SMS_ExtendedException
. Так как управляемая библиотека поставщика SMS не содержит оболочку этих исключений, для доступа к ним потребуется использовать объект ManagementException пространства имен System.Management.
Обработка ошибки асинхронного запроса
Создайте асинхронный запрос.
В обработчике событий асинхронного запроса SmsBackgroundWorker.QueryProcessorCompleted реализуйте код, приведенный в следующем примере.
Выполните асинхронный запрос. Чтобы протестировать обработчик исключений, передайте неправильно сформированную строку запроса, например
Select & from &&&
в метод QueryProcessorBase.ProcessQuery .
Пример
В следующем примере реализуется обработчик событий SmsBackgroundWorker.QueryProcessorCompleted .
Сведения о вызове примера кода см. в разделе Вызов фрагментов кода 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...");
}
Метод примера имеет следующие параметры:
Параметр | Тип | Описание |
---|---|---|
sender |
- Object |
Источник события. |
e |
- RunWorkerCompletedEventArgs |
Данные события. Дополнительные сведения см. в разделе Класс RunWorkerCompletedEventArgs. |
Компиляция программы
Для этого примера на C# требуется следующее:
Пространства имен
System;
System.Collections.Generic;
System.Text
Майкрософт. ConfigurationManagement.ManagementProvider
Майкрософт. ConfigurationManagement.ManagementProvider.WqlQueryEngine
System.Management
System.ComponentModel
Assembly
microsoft.configurationmanagement.managementprovider
adminui.wqlqueryengine
System.Management
Надежное программирование
Дополнительные сведения об обработке ошибок см. в разделе Сведения об ошибках Configuration Manager.