| Previous | Next |
| UI_E_FP_OVERFLOW | UI_E_STORYBOARD_ACTIVE |
UI_E_WRONG_THREAD
The scope of UI_E_WRONG_THREAD is Windows Animation Manager: a thread-affine animation object was called from a thread other than its creator. Preserve 0x802A000C beside the returning call before cleanup or retry creates a more generic secondary failure.
Wrong turns
When it is returned, UI_E_ILLEGAL_REENTRANCY can happen on the owner thread; WRONG_THREAD is an affinity violation.
Do not move object creation to a worker merely to match one failing call.
Object and state boundary
When it is returned, Windows Animation is a stateful COM subsystem. During a this result investigation, animation variables, transitions and storyboards are created under a manager, scheduled against a monotonic animation time, updated before drawing, and eventually sealed or released. A visible glitch can therefore be downstream of a lifecycle, ownership, timeline, callback, or numeric contract failure.
During a this result investigation, COM marshaling does not automatically make every animation object free-threaded. UI and animation managers are commonly coordinated by one event-loop thread, while worker callbacks must post data rather than directly mutate the graph.
The first owner to inspect is the animation manager, storyboard, transition, timer, or callback that returned the HRESULT.
Capture before retry
| Capture | Diagnostic value |
|---|---|
| Creator and caller thread IDs for this HRESULT. | This identifies the exact object or resource generation involved and helps test the Windows Animation Manager boundary. |
| COM apartment types for this HRESULT. | This places the failure on the lifecycle or transaction timeline and helps test the Windows Animation Manager boundary. |
| Marshaling or dispatcher boundary for this HRESULT. | This separates caller input from environment and service state and helps test the Windows Animation Manager boundary. |
| Object creation and release timeline for this HRESULT. | This provides a stable comparison across retries or another machine and helps test the Windows Animation Manager boundary. |
Controlled comparisons
| Control | Interpretation | Hold constant |
|---|---|---|
| Same input, fresh object or connection | If the result disappears, retained lifecycle or ownership state is implicated. | While diagnosing this result, keep the original data, account, device, or timeline parameters unchanged. |
| Same object, reduced operation | If the result follows one specific transition, statement, file, or ceremony step, the failure is localized. | While diagnosing this result, remove only unrelated work and keep the first failing boundary visible. |
| Same operation, controlled environment | If the result follows one machine, account, volume, network, or device, environment matters. | While diagnosing it, keep versions and identity explicit rather than comparing only the final message. |
Step-by-step investigation
The investigation should change one variable at a time and keep the original failing sample.
- First: Create and use the object on one designated thread.
- Next: Post immutable data from workers to that thread.
- Then: Verify no timer callback bypasses the dispatcher.
- Finally: Release thread-affine objects before their owner thread exits.
Closure criteria
Closure for this HRESULT requires all calls and release occur on the owner thread while workers communicate through an explicit queue; then repeat the next lifecycle operation to detect stale state.
Technical references
The references below define the API family or storage/protocol behavior used to interpret it.
- Microsoft: Windows Animation error codes
- Microsoft: Windows Animation overview
- Microsoft: Schedule a storyboard
- Microsoft: IUIAnimationManager interface
Looking for a different code? Search another status or error code.
