| Предыдущий | Следующий |
| RPC_E_OUT_OF_RESOURCES | RPC_E_NOT_REGISTERED |
RPC_E_ATTEMPTED_MULTITHREAD
Что означает RPC_E_ATTEMPTED_MULTITHREAD
RPC_E_ATTEMPTED_MULTITHREAD: COM-код попытался использовать объект или context в многопоточном режиме, хотя его apartment model требует однопоточного доступа. Частая причина — прямое использование STA-bound interface pointer из другого thread.
Что проверить
- Оставляйте STA-object на owning thread и передавайте работу в его message loop.
- Между apartments маршальте interfaces штатными COM APIs или через Global Interface Table.
- Проверьте, не хранится ли interface pointer в глобальном объекте, который затем вызывают worker threads.
Что делать
Исправьте threading model и маршалинг. Mutex вокруг чужого STA pointer не делает такой вызов корректным, потому что COM-апартамент affinity остаётся прежней.
Технические ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.
