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