Come eseguire una query Configuration Manager asincrona usando codice gestito

In Configuration Manager, per eseguire una query asincrona usando il provider SMS gestito, usare il metodo ProcessQuery.

Il primo parametro del metodo ProcessQuery è un'istanza della classe SmsBackgroundWorker che fornisce due gestori eventi:

Per eseguire una query asincrona

  1. Configurare una connessione al provider SMS. Per altre informazioni, vedere Nozioni fondamentali sul provider SMS.

  2. Creare l'oggetto SmsBackgroundWorker e popolare le proprietà QueryProcessorObjectReady e QueryProcessorCompleted con i nomi dei metodi di callback.

  3. Dall'oggetto WqlConnectionManager ottenuto nel passaggio 1, chiamare il metodo ProcessQuery dell'oggetto QueryProcessor per avviare la query asincrona.

Esempio

Nell'esempio seguente vengono eseguite query per tutti gli oggetti SMS_Collection disponibili e nel gestore eventi vengono scritte diverse proprietà della raccolta nella console di Configuration Manager.

Per informazioni sulla chiamata del codice di esempio, vedere Chiamata di frammenti di codice 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...");  
}  

Questo metodo di esempio include i parametri seguenti:

Parametro Tipo Descrizione
connection Gestito: WqlConnectionManager Connessione valida al provider SMS.

Compilazione del codice

Namespaces

Sistema

System.collections.generic

System.ComponentModel

Microsoft. ConfigurationManagement.ManagementProvider

Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine

Assembly

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

Programmazione efficiente

Le eccezioni Configuration Manager che possono essere generate sono SmsConnectionException e SmsQueryException. Questi possono essere intercettati insieme a SmsException.

Vedere anche

Panoramica degli oggettiConfiguration Manager Proprietà lazy
Come chiamare un metodo della classe oggetto Configuration Manager usando codice gestito
Come connettersi a un provider di Configuration Manager usando codice gestito
Come creare un oggetto Configuration Manager usando codice gestito
Come modificare un oggetto Configuration Manager usando codice gestito
Come eseguire una query di Configuration Manager sincrona usando codice gestito
Come leggere un oggetto Configuration Manager usando codice gestito
Come leggere le proprietà lazy usando codice gestito
Come eseguire una query di Configuration Manager sincrona usando codice gestito
Configuration Manager linguaggio di query WMI esteso
set di risultati Configuration Manager
query speciali Configuration Manager
Informazioni sulle query