Что означает код HRESULT 0x802A0106 (UI_E_TRANSITION_ALREADY_USED)?

 
Предыдущий Следующий
UI_E_LOOPS_OVERLAP UI_E_TRANSITION_NOT_IN_STORYBOARD

UI_E_TRANSITION_ALREADY_USED

Объект и состояние

UI_E_TRANSITION_ALREADY_USED (0X802A0106) относится к Windows Animation Manager storyboard/transition lifecycle. Для расследования рабочее условие — transition / уже / использован. Сохраняйте первый native return и состояние объекта до автоматического retry или cleanup.

Storyboard или transition могут оставаться scheduled/sealed/used после визуального завершения, поэтому reuse должен опираться на API status, а не на предположение caller.

Конкретные признаки из исходного EN-описания

  • When it is returned, UI_E_DIFFERENT_OWNER can arise even with a never-used object; ALREADY_USED is specifically prior membership.
  • The scope of the result is Windows Animation Manager : the same transition object was added where a fresh transition instance was required.
  • Do not AddRef the transition and assume reference counting permits multiple storyboard memberships.
  • Reusing one COM object across storyboards or after a completed storyboard has been released violates that one-membership lifecycle.

Минимальный trace

  • animation manager/storyboard/transition identity и lifecycle generation.
  • manager update time, schedule/status и callback ordering.
  • точный IUIAnimation* method и первый HRESULT.

Для timeline ошибок фиксируйте update time и callback ordering: reentrancy или поздний update способны сделать старое действие недопустимым для уже изменившегося object state.

Причинная граница

Проверьте condition «transition / уже / использован» на том же API и object generation. Изменение одного prerequisite должно убрать этот HRESULT или сдвинуть первый отказ к другой конкретной границе.

Для «transition / уже / использован» сопоставьте storyboard/transition status и manager update time. Визуальное положение объекта не заменяет lifecycle-state, который Windows Animation Manager считает активным.

Подтверждение результата

Приведите storyboard/transition к состоянию, разрешающему операцию «transition / уже / использован», либо создайте новый объект для overlapping work; затем подтвердите поведение на том же animation timeline.

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


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