Что означает код HRESULT 0x8000001D (RO_E_UNSUPPORTED_FROM_MTA)?

 
Также может означать:
КонстантаТипОС
STATUS_BUS_RESETNTSTATUSWindows
Предыдущий Следующий
RO_E_MUST_BE_AGILE RO_E_COMMITTED

RO_E_UNSUPPORTED_FROM_MTA

Что означает RO_E_UNSUPPORTED_FROM_MTA

RO_E_UNSUPPORTED_FROM_MTA сообщает, что вызов Windows Runtime выполняется из многопоточного COM-apartment, тогда как эта операция или класс поддерживает только однопоточный apartment. Ошибка относится к модели потоков, а не к разрешениям пакета или параметрам самой операции.

Что проверить

  • Определите, на каком потоке выполняется вызов и как для него инициализирован COM/WinRT.
  • Проверьте документацию класса: требуется ли STA и привязан ли объект к потоку создания.
  • Не передаётся ли STA-объект в фоновую задачу, пул потоков или продолжение асинхронной операции.
  • Исключите повторную инициализацию того же потока с несовместимой моделью apartment.

Обычно вызов нужно маршалировать на подходящий STA-поток и там же соблюдать жизненный цикл объекта. Создание нового MTA-потока проблему не решает. После исправления отдельно проверьте асинхронные продолжения: они не должны неожиданно возвращать работу на поток с другой COM-моделью.

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


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