Site icon EfmSoft

Что означает код HRESULT 0x80010102 (RPC_E_ATTEMPTED_MULTITHREAD)?

 
Предыдущий Следующий
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 остаётся прежней.

Технические ссылки


Нужно найти другой код? Найти другой код состояния или ошибки.

Exit mobile version