Aracılığıyla paylaş


Yönetilen Kod Kullanarak Configuration Manager Zaman Uyumsuz Hataları İşleme

Zaman uyumsuz bir sorgu sırasında oluşan Configuration Manager hatasını işlemek için SmsBackgroundWorker.QueryProcessorCompleted olay işleyicisine geçirilen Hata Özel Durumu özelliğini test RunWorkerCompletedEventArgs edin. Hata değilsenull, bir özel durum oluştu ve nedenini bulmak için Hata'yı kullanıyorsunuz.

Hata bir SmsQueryException ise, bunu kullanarak temel alınan __ExtendedException veya SMS_ExtendedExceptionöğesine ulaşabilirsiniz. Yönetilen SMS Sağlayıcısı kitaplığı bu özel durumları sarmalamadığından, bunlara erişmek için System.Management ad alanı ManagementException nesnesini kullanmanız gerekir.

Zaman uyumsuz sorgu hatasını işlemek için

  1. Zaman uyumsuz bir sorgu oluşturun.

  2. SmsBackgroundWorker.QueryProcessorCompleted olay işleyicisi zaman uyumsuz sorgusunda aşağıdaki örnekteki kodu uygulayın.

  3. Zaman uyumsuz sorguyu çalıştırın. Özel durum işleyicisini test etmek için, gibi Select & from &&& hatalı biçimlendirilmiş bir sorgu dizesini QueryProcessorBase.ProcessQuery yöntemine geçirin.

Örnek

Aşağıdaki örnek bir SmsBackgroundWorker.QueryProcessorCompleted olay işleyicisi uygular.

Örnek kodu çağırma hakkında bilgi için bkz. Configuration Manager Kod Parçacıklarını Çağırma.

void bw1_QueryProcessorCompleted(object sender, RunWorkerCompletedEventArgs e)  
{  
    if (e.Error != null)  
    {  
        Console.WriteLine("There was an Error");  
        if (e.Error is SmsQueryException)  
        {  
            SmsQueryException queryException = (SmsQueryException)e.Error;  
            Console.WriteLine(queryException.Message);  

            // Get either the __ExtendedStatus or SMS_ExtendedStatus object and display various properties.  
            ManagementException mgmtExcept = queryException.InnerException as ManagementException;  

            if (mgmtExcept != null)  
            {  
                if (string.Equals(mgmtExcept.ErrorInformation.ClassPath.ToString(), "SMS_ExtendedStatus", StringComparison.OrdinalIgnoreCase) == true)  
                {  
                    Console.WriteLine("Configuration Manager provider exception");  
                }  

                else if (string.Equals(mgmtExcept.ErrorInformation.ClassPath.ToString(), "__ExtendedStatus", StringComparison.OrdinalIgnoreCase) == true)  
                {  
                    Console.WriteLine("WMI exception");  
                }  
                Console.WriteLine(mgmtExcept.ErrorCode.ToString());  
                Console.WriteLine(mgmtExcept.ErrorInformation["ParameterInfo"].ToString());  
                Console.WriteLine(mgmtExcept.ErrorInformation["Operation"].ToString());  
                Console.WriteLine(mgmtExcept.ErrorInformation["ProviderName"].ToString());  
            }  

        }  
        if (e.Error is SmsConnectionException)  
        {  
            Console.WriteLine("There was a connection error :" + ((SmsConnectionException)e.Error).Message);  
            Console.WriteLine(((SmsConnectionException)e.Error).ErrorCode);  
        }  
    }  

    Console.WriteLine("Done...");  
}  

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

Parametre Tür Açıklama
sender - Object Olayın kaynağı.
e - RunWorkerCompletedEventArgs Olay verileri.

Daha fazla bilgi için bkz . RunWorkerCompletedEventArgs Sınıfı.

Kodu Derleme

Bu C# örneği şunları gerektirir:

Ad alanları

Sistem

System.Collections.Generic

System.Text

Microsoft. ConfigurationManagement.ManagementProvider

Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine

System.Management

System.ComponentModel

Derleme

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

System.Management

Sağlam Programlama

Hata işleme hakkında daha fazla bilgi için bkz. Configuration Manager Hataları Hakkında.

Ayrıca Bkz

Hatalar hakkında