Udostępnij przez


Jak wykonać asynchroniczne zapytanie Configuration Manager przy użyciu kodu zarządzanego

W Configuration Manager, aby wykonać zapytanie asynchroniczne przy użyciu zarządzanego dostawcy programu SMS, należy użyć metody ProcessQuery.

Pierwszym parametrem metody ProcessQuery jest wystąpienie klasy SmsBackgroundWorker , które zapewnia dwa programy obsługi zdarzeń:

Aby wykonać zapytanie asynchroniczne

  1. Skonfiguruj połączenie z dostawcą programu SMS. Aby uzyskać więcej informacji, zobacz Podstawy dostawcy programu SMS.

  2. Utwórz obiekt SmsBackgroundWorker i wypełnij właściwości QueryProcessorObjectReady i QueryProcessorCompleted nazwami metod wywołania zwrotnego.

  3. Z obiektu WqlConnectionManager, który uzyskasz w kroku 1, wywołaj metodę ProcessQuery obiektu QueryProcessor, aby uruchomić zapytanie asynchroniczne.

Przykład

Poniższy przykład wykonuje zapytania dotyczące wszystkich dostępnych obiektów SMS_Collection, a w programie obsługi zdarzeń przykład zapisuje kilka właściwości kolekcji w konsoli Configuration Manager.

Aby uzyskać informacje na temat wywoływania przykładowego kodu, zobacz Wywoływanie fragmentów kodu 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...");
}

Ta przykładowa metoda ma następujące parametry:

Parametr Wpisać Opis
connection Zarządzane: WqlConnectionManager Prawidłowe połączenie z dostawcą programu SMS.

Kompilowanie kodu

Przestrzenie nazw

System

System.Collections.Generic

System.ComponentModel

Microsoft.ConfigurationManagement.ManagementProvider

Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine

Montaż

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

Niezawodne programowanie

Wyjątki Configuration Manager, które można zgłaszać, to SmsConnectionException i SmsQueryException. Można je złapać razem z platformą SmsException.

Zobacz też

Omówienie obiektówConfiguration Manager Właściwości z opóźnieniemJak wywołać metodę klasy obiektów Configuration Manager przy użyciu kodu zarządzanegoJak nawiązać połączenie z dostawcą Configuration Manager przy użyciu kodu zarządzanegoJak utworzyć obiekt Configuration Manager obiekt za pomocą kodu zarządzanegoJak zmodyfikować obiekt Configuration Manager przy użyciu kodu zarządzanegoJak wykonać synchroniczne zapytanie Configuration Manager przy użyciu kodu zarządzanegoJak odczytać Configuration Manager Obiekt przy użyciu kodu zarządzanegoJak odczytywać właściwości z opóźnieniem przy użyciu kodu zarządzanegoJak wykonać synchroniczne zapytanie Configuration Manager przy użyciu kodu zarządzanegoConfiguration Manager rozszerzony język zapytań WMIConfiguration Manager zestawywynikówConfiguration Manager specjalnych zapytańdotyczących zapytań