Что означает код 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 означает, что WinRT не допускает данное назначение delegate. Обычно проблема связана с тем, кому принадлежит event/delegate, когда выполняется назначение и совместим ли callback с ожидаемым типом.

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

  • Определите конкретное свойство или event, куда назначается delegate, и ожидаемый тип callback.
  • Проверьте срок жизни объекта-владельца и не выполняется ли назначение после его закрытия или на неверном apartment/thread.
  • Для generated projections проверьте сигнатуру delegate и metadata, а не только совпадение количества аргументов в исходном языке.

Как исправить

Создавайте и назначайте callback в допустимом состоянии объекта и через предусмотренный event/delegate API. Не удерживайте delegate дольше объекта, которому он принадлежит.

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

Подписка создаётся и снимается симметрично, callback вызывается на ожидаемом объекте, а повторное создание объекта не использует delegate от старого экземпляра.

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


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