| Предыдущий | Следующий |
| RPC_E_CANTPOST_INSENDCALL | RPC_E_CANTCALLOUT_INEXTERNALCALL |
RPC_E_CANTCALLOUT_INASYNCCALL
Что означает RPC_E_CANTCALLOUT_INASYNCCALL
RPC_E_CANTCALLOUT_INASYNCCALL возвращается, когда код, обслуживающий асинхронный COM-вызов, пытается сделать новый исходящий COM-вызов в запрещённом контексте. Ограничение связано с текущей диспетчеризацией вызова и защитой от недопустимого reentrancy.
Что проверить
Проследите стек от callback до первого внешнего COM-интерфейса. Часто исходящий вызов скрыт внутри helper-функции, логирования, UI-объекта или другого компонента, поэтому искать нужно не только явный вызов рядом с местом ошибки.
Исправление состоит в разделении этапов: callback должен завершить текущую обработку, после чего зависимую работу можно поставить в очередь owning apartment или выполнить из обычного пути управления. Повтор того же callout внутри текущего callback не меняет контекст и закономерно вернёт тот же HRESULT.
Технические ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.