Что означает код HRESULT 0x80000018 (E_ILLEGAL_DELEGATE_ASSIGNMENT)?

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

E_ILLEGAL_DELEGATE_ASSIGNMENT

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

E_ILLEGAL_DELEGATE_ASSIGNMENT (0x80000018) — Делегат назначен в ситуации, где это запрещено.

Результат 0x80000018 пришёл из подсистемы «COM/WinRT» при работе с областью «контракт вызываемого interface, аргументы и state объекта». Для сообщения «делегат назначен в ситуации, где это запрещено» практический предмет проверки — «illegal, delegate, assignment».

Что проверить и как подтвердить исправление

В первую очередь сопоставьте первый отказ с фактическими параметрами операции. Для 0x80000018 в сценарии «делегат назначен в ситуации, где это запрещено» воспроизведите отказ на минимальном объекте и меняйте только одно условие за запуск, чтобы отделить неверный вход от состояния системы.

Сопоставьте с результатом 0x80000018 следующие данные: IID и method, thread/apartment, argument values, object state и исходный HRESULT; отдельно запишите HRESULT, ID, IDs, IAgileObject. До исправления 0x80000018 сохраните исходное состояние объекта по теме «illegal, delegate, assignment».

Для 0x80000018 применяйте исправление на границе первого отказа: приведите аргументы и жизненный цикл объекта к контракту метода; неизменённый вызов после contract failure повторять не следует. Сообщение «делегат назначен в ситуации, где это запрещено» при 0x80000018 не следует подавлять общей обработкой исключения.

После исправления повторите тот же вызов на прежних данных; у результата 0x80000018 должен измениться первый неуспешный этап, а не только последующее сообщение.

Документация для результата 0x80000018: C++/WinRT error handling · concurrency and asynchronous operations · WinMD files.


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