Compartilhar via


Como Executar uma Consulta de Configuration Manager Assíncrona com o Código Gerido

No Configuration Manager, para efetuar uma consulta assíncrona com o Fornecedor de SMS gerido, utilize o método ProcessQuery.

O primeiro parâmetro do método ProcessQuery é uma instância da classe SmsBackgroundWorker que fornece dois processadores de eventos:

Para executar uma consulta assíncrona

  1. Configure uma ligação ao Fornecedor de SMS. Para obter mais informações, veja Noções básicas do Fornecedor de SMS.

  2. Crie o objeto SmsBackgroundWorker e preencha as propriedades QueryProcessorObjectReady e QueryProcessorCompleted com os nomes dos métodos de chamada de retorno.

  3. No objeto WqlConnectionManager que obtém no primeiro passo, chame o método ProcessQuery do objeto QueryProcessor para iniciar a consulta assíncrona.

Exemplo

O exemplo seguinte consulta todos os objetos SMS_Collection disponíveis e, no processador de eventos, o exemplo escreve várias das propriedades da coleção na consola do Configuration Manager.

Para obter informações sobre como chamar o código de exemplo, veja Chamar Configuration Manager Fragmentos de Código.

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...");
}

Este método de exemplo tem os seguintes parâmetros:

Parâmetro Tipo Descrição
connection Gerido: WqlConnectionManager Uma ligação válida ao Fornecedor de SMS.

Compilando o código

Namespaces

System

System.Collections.Generic

System.ComponentModel

Microsoft.ConfigurationManagement.ManagementProvider

Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine

Assembly

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

Programação robusta

As Configuration Manager exceções que podem ser geradas são SmsConnectionException e SmsQueryException. Estes podem ser capturados em conjunto com SmsException.

Confira também

Descrição geral dos objetosConfiguration Manager Propriedades LentasComo Chamar um Método de Classe de Objeto Configuration Manager através do Código GeridoComo Ligar a um Fornecedor de Configuration Manager através do Código GeridoComo Criar um Configuration Manager Objeto ao Utilizar Código GeridoComo Modificar um Objeto de Configuration Manager Utilizando Código GeridoComo Executar uma Consulta de Configuration Manager Síncrona com o Código GeridoComo Ler uma Configuration Manager Object by Using Managed CodeHow to Read Lazy Properties by Using Managed CodeHow to Perform a Synchronous Configuration Manager Query Using Managed CodeConfiguration Manager Extended WMI Query LanguageConfiguration Manager Result SetsConfiguration Manager consultas especiaissobre consultas