| Previous | Next |
| E_ILLEGAL_DELEGATE_ASSIGNMENT | E_APPLICATION_EXITING |
E_ASYNC_OPERATION_NOT_STARTED
Asynchronous operation was not started correctly
E_ASYNC_OPERATION_NOT_STARTED is HRESULT 2147483673 (0x80000019) from winerror.h. The documented description is “An async operation was not properly started.” The relevant context is the Windows Runtime metadata, object lifetime, asynchronous operation, activation, and apartment model.
What to verify
Verify that the creation path, start call, operation ID, status transitions, and completion handler registration are all present in the expected order. That boundary prevents this result from being misclassified as corruption, network failure, or a reason for an unsafe automatic retry.
Where it is encountered
- This result can be returned during C++/WinRT, WRL, .NET projections, or native WinRT ABI calls.
- This result can be returned during runtime-class activation, WinMD reflection, asynchronous objects, observable state, or view lifecycle.
- It can be returned during cross-thread and cross-apartment handoff between UI, ASTA, STA, MTA, broker, and background work.
The immediate focus is an async object that is queried, awaited, cancelled, or completed without the required start transition or producer initialization.
Correct handling and recovery
Start the operation through the documented API, propagate start failures, and do not expose the object to consumers before its state machine is active.
An unchanged retry loop can duplicate effects, deepen reentrancy, or hide an invalid lifetime transition.
Difference from nearby HRESULTs
It means no valid async execution began; E_PENDING means an operation did begin but its result is not ready.
The distinction around it should be represented explicitly in control flow and operational dashboards.
Developer and administrator guidance
After it, avoid broad permission grants or system-wide resets unless code-specific evidence proves a global configuration problem.
Practical scenario
A wrapper creates an async object but returns it before invoking the producer callback. The implementation starts production first and adds a test for immediate cancellation.
References
Looking for a different code? Search another status or error code.