У меня есть трудновоспроизводимая проблема с Windows Management Instrumentation (WMI):
Я написал сервис, в котором есть несколько потоков. Два из них работают с WMI следующим образом:
— создание COM-компонента CLSID_WbemLocator;
— вызов IWbemLocator::ConnectServer()
— получение информации через полученный объект IWbemServices.
Проблема состоит в том, что иногда (редко) мой сервис зависает. Анализ оставшихся от него log-ов показал, что зависание происходит прммерно в момент, когда оба вышеупомянутых потока вызвали IWbemLocator::ConnectServer().
Почему это происходит? Ведь каждый из потоков использует СОБСТВЕННЫЙ экземпляр COM-объекта, независимы от того, что используется другим потоком. И можно ли как-то эту проблему обойти?