| Предыдущий | Следующий |
| 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.
Нужно найти другой код? Найти другой код состояния или ошибки.