2016-03-29 2 views
1

Я пытаюсь получить начальный режим службы Windows с WMI. В начале все работало нормально. Но теперь я получаю общую ошибку «System.Management.ManagementBaseObject».C# WMI Получить запрос для служебной информации throws generic error

Мой код выглядит следующим образом:

 string wmiQuery = String.Format("Select StartMode from Win32_Service where Name= '{0}'", serviceName); 
    try 
    { 
     ManagementObjectSearcher wmi = new ManagementObjectSearcher(wmiQuery); 

     ManagementObjectCollection coll = wmi.Get(); 

     foreach (var service in coll) // throws the Exception!!!! 
     { 

     } 
    } 
    catch (Exception ex) 
    { 

    } 

StackTrace:

System.Management.ManagementException.ThrowWithExtendedInfo (ManagementStatus ERRORCODE) System.Management.ManagementObjectCollection.ManagementObjectEnumerator.MoveNext()

ответ

0

Исключение в MoveNext звучит так, как будто это может быть проблема синхронизации. Что делать, если вы заблокировали синхронизатор коллекции:

  lock (coll.SyncRoot) 
      { 
       foreach (var service in coll) 
       { 
        //do your stuff 
       } 
      }