| Предыдущий | Следующий |
| CO_E_INIT_SCM_EXEC_FAILURE | CO_E_CANT_REMOTE |
CO_E_INIT_ONLY_SINGLE_THREADED
Что означает результат
CO_E_INIT_ONLY_SINGLE_THREADED: Поток уже прошёл инициализацию COM в режиме, несовместимом с новой попыткой однопоточной инициализации. Apartment model выбирается для потока при первой успешной инициализации и не должен произвольно меняться позже.
Что проверить
- Запишите первый CoInitialize/CoInitializeEx на этом thread и переданный COINIT.
- Проверьте библиотеки, которые могут неявно инициализировать COM раньше вашего кода.
- Не путайте разные потоки: каждый поток имеет собственную COM initialization state.
- Проверьте баланс успешных CoInitializeEx и CoUninitialize, но не вызывайте CoUninitialize за чужую инициализацию.
Диагностика и исправление
Выберите один совместимый apartment model для данного потока или перенесите работу в отдельный поток с нужной моделью. Повторная инициализация тем же несовместимым режимом состояние не меняет.
Технические ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.