Aracılığıyla paylaş


System.Management Kullanarak Zaman Uyumsuz Sorgu Gerçekleştirme

Configuration Manager istemcisi Windows Araçları (WMI) ad alanında zaman uyumsuz sorgu gerçekleştirmek için WQL sorgusu belirten bir ManagementObjectSearcher nesne oluşturun. Ardından her sorgu sonucu ve sorgunun sonu için bir olay işleyicisi belirten bir ManagementOperationObserver oluşturursunuz.

Nesneyle get ManagementOperationObserver yöntemi çağrıldığında ManagementObjectSearcher zaman uyumsuz sorgu çalıştırılır.

Zaman uyumsuz sorgu gerçekleştirmek için

  1. Configuration Manager istemcisi WMI ad alanına bir bağlantı ayarlayın. Daha fazla bilgi için bkz. System.Management Kullanarak Configuration Manager İstemcisi WMI Ad Alanına Bağlanma.

  2. Bir ManagementObjectSearcher nesne oluşturun.

  3. Bir ManagementOperationObserver nesne oluşturun.

  4. nesnesine ManagementOperationObserver bir ObjectReadyEventHandler yöntem ekleyin.

  5. öğesine ManagementOperationObserverbir CompletedEventHandler yöntem ekleyin.

  6. get yöntemini çağırın ManagementObjectSearcher ve nesnesini parametre olarak sağlayın ManagmentOperationObserver .

  7. Sorgu çalıştırılırken uygulamanızın hala çalıştığından emin olun.

Örnek

Aşağıdaki C# kod örneği, bir istemciye yüklenen bileşenler için zaman uyumsuz olarak sorgular.

Örnek kodu çağırma hakkında bilgi için bkz. How to Call a WMI Class Method by Using System.Management.


public void EnumerateInstancesAsync(ManagementScope scope)  
{  
    try  
    {  
        // Instantiate an object searcher with the query.  
        ManagementObjectSearcher searcher =  
            new ManagementObjectSearcher(scope, new  
            SelectQuery("CCM_InstalledComponent"));  

        // Create a results watcher object  
        // and handler for results and completion.  
        ManagementOperationObserver results = new  
            ManagementOperationObserver();  

        // Attach handler to events for results and completion.  
        results.ObjectReady += new  
            ObjectReadyEventHandler(this.NewObject);  
        results.Completed += new  
            CompletedEventHandler(this.Done);  

        Console.WriteLine("Installed Components");  
        Console.WriteLine("--------------------");  
        Console.WriteLine();  

        // Call the asynchronous overload of Get()  
        // to start the enumeration.  
        searcher.Get(results);  

        // Do something else while results  
        // arrive asynchronously.  
        while (!this.Completed)  
        {  
            System.Threading.Thread.Sleep(1000);  
        }  

        this.Reset();  
    }  
    catch (ManagementException e)  
    {  
        Console.WriteLine("Failed to run query: " + e.Message);  
        throw;  
    }  

}  

private bool isCompleted = false;  

private void NewObject(object sender,  
    ObjectReadyEventArgs obj)  
{  
    try  
    {  
        Console.WriteLine("Name: {0}, Version = {1}",  
            obj.NewObject["DisplayName"],  
            obj.NewObject["Version"]);  
    }  
    catch (ManagementException e)  
    {  
        Console.WriteLine("Error: " + e.Message);  
    }  

}  

private bool Completed  
{  
    get  
    {  
        return isCompleted;  
    }  
}  

private void Reset()  
{  
    isCompleted = false;  
}  

private void Done(object sender,  
         CompletedEventArgs obj)  
{  
    isCompleted = true;  
}  

Bu örnek yöntem aşağıdaki parametrelere sahiptir:

Parametre Tür Açıklama
Scope ManagementScope Geçerli ManagementScopebir . Yol root\ccm olmalıdır.

Kodu Derleme

Ad alanları

Sistem.

System.Management.

Derleme

System.Management.

Sağlam Programlama

Oluşturulabilecek özel durum System.Management.ManagementException'dır.

Ayrıca Bkz

WMI Programlama hakkında Configuration Manager
System.Management Kullanarak WMI Sınıf Yöntemini Çağırma
System.Management Kullanarak Configuration Manager İstemcisi WMI Ad Alanına Bağlanma
System.Management Kullanarak Zaman Uyumlu Sorgu Gerçekleştirme
System.Management Kullanarak WMI Nesnesi Okuma