Ошибка 0x80010106 означает «HRESULT - 0x80010106 - Невозможно изменить режим потока после его установки.»
Проблема в основном в том, что поток может Инициализировать свой режим COM (и тип квартиры, STA / MTA) только один раз. Как только он будет установлен, вы получите эту ошибку, если попытаетесь снова инициализировать с другим значением.
Часто с этой ошибкой происходит то, что какой-либо другой сторонний код вызывает инициализацию COM до выполнения вашего кода. Если это так, то у вас есть несколько вариантов:
1) Попробуйте найти способ, чтобы ваш код выполнялся первым, чтобы вы могли сами установить тип квартиры COM. Это может быть сложно, и может вызвать побочные эффекты, если сторонний код ожидает STA
2) Поместите свой код в собственный поток, где вы можете явно указать тип квартиры
Если вы на самом деле не заботитесь о типе квартиры, вы можете просто изменить вызов CoInitializeEx, чтобы использовать COINIT_APARTMENTTHREADED (STA) вместо COINIT_MULTITHREADED (MTA).
Надеюсь, это поможет,
John