Выполнение асинхронного запроса Configuration Manager с помощью управляемого кода

В Configuration Manager для выполнения асинхронного запроса с помощью управляемого поставщика SMS используется метод ProcessQuery.

Первым параметром метода ProcessQuery является экземпляр класса SmsBackgroundWorker , который предоставляет два обработчика событий:

  • QueryProcessObjectReady. Этот обработчик событий вызывается для каждого объекта, возвращаемого запросом. Обработчик событий предоставляет объект IResultObject, представляющий объект .

  • QueryProcessCompleted. Этот обработчик событий вызывается по завершении запроса. В нем также содержатся сведения о любых возникающих ошибках. Дополнительные сведения см. в статье Сведения об обработке ошибок см. в статье Обработка Configuration Manager асинхронных ошибок с помощью управляемого кода.

    Вторым параметром метода ProcessQuery является инструкция WQL для запроса.

Выполнение асинхронного запроса

  1. Настройте подключение к поставщику SMS. Дополнительные сведения см. в статье Основы поставщика SMS.

  2. Создайте объект SmsBackgroundWorker и заполните свойства QueryProcessorObjectReady и QueryProcessorCompleted именами методов обратного вызова.

  3. Из объекта WqlConnectionManager, полученного на шаге 1, вызовите метод ProcessQuery объекта QueryProcessor, чтобы запустить асинхронный запрос.

Пример

В следующем примере выполняется запрос для всех доступных объектов SMS_Collection, а в обработчике событий этот пример записывает несколько свойств коллекции в консоль Configuration Manager.

Сведения о вызове примера кода см. в разделе Вызов фрагментов кода Configuration Manager.

public void QueryCollections(WqlConnectionManager connection)  
{  
    try  
    {  
        // Set up the query.  
        SmsBackgroundWorker bw1 = new SmsBackgroundWorker();  
        bw1.QueryProcessorObjectReady += new EventHandler<QueryProcessorObjectEventArgs>(bw1_QueryProcessorObjectReady);  
        bw1.QueryProcessorCompleted += new EventHandler<RunWorkerCompletedEventArgs>(bw1_QueryProcessorCompleted);  

        // Query for all collections.  
        connection.QueryProcessor.ProcessQuery(bw1, "select * from SMS_Collection");  

        // Pause while query runs.  
        Console.ReadLine();  
    }  
    catch (SmsException ex)  
    {  
        Console.WriteLine("Failed to start asynchronous query: ", ex.Message);  
    }  
}  

void bw1_QueryProcessorObjectReady(object sender, QueryProcessorObjectEventArgs e)  
{  
    try  
    {  
        // Get the collection.  
        IResultObject collection = (IResultObject)e.ResultObject;  

        //Display properties.  
        Console.WriteLine(collection["CollectionID"].StringValue);  
        Console.WriteLine(collection["Name"].StringValue);  
        Console.WriteLine();  
        collection.Dispose();  
    }  
    catch (SmsQueryException eX)  
    {  
        Console.WriteLine("Query Error: " + eX.Message);  
    }  
}  

void bw1_QueryProcessorCompleted(object sender, RunWorkerCompletedEventArgs e)  
{  
    Console.WriteLine("Done...");  
}  

Этот пример метода имеет следующие параметры:

Параметр Тип Описание
connection Управляемых: WqlConnectionManager Допустимое подключение к поставщику SMS.

Компиляция программы

Пространства имен

System;

System.Collections.Generic;

System.ComponentModel

Майкрософт. ConfigurationManagement.ManagementProvider

Майкрософт. ConfigurationManagement.ManagementProvider.WqlQueryEngine

Assembly

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

Надежное программирование

Configuration Manager исключения, которые могут быть вызваны: SmsConnectionException и SmsQueryException. Их можно поймать вместе с SmsException.

См. также

Общие сведения об объектахConfiguration Manager отложенные свойства
Вызов метода класса объектов Configuration Manager с помощью управляемого кода
Подключение к поставщику Configuration Manager с помощью управляемого кода
Создание объекта Configuration Manager с помощью управляемого кода
Изменение объекта Configuration Manager с помощью управляемого кода
Выполнение синхронного запроса Configuration Manager с помощью управляемого кода
Чтение объекта Configuration Manager с помощью управляемого кода
Чтение отложенных свойств с помощью управляемого кода
Выполнение синхронного запроса Configuration Manager с помощью управляемого кода
Configuration Manager расширенный язык запросов WMI
Результирующие наборы Configuration Manager
специальные запросы Configuration Manager
Сведения о запросах