| Previous | Next |
| RO_E_UNSUPPORTED_FROM_MTA | RO_E_BLOCKED_CROSS_ASTA_CALL |
RO_E_COMMITTED
Object was already committed
RO_E_COMMITTED is HRESULT 2147483678 (0x8000001E) from winerror.h. The documented description is “The object has been committed.” The relevant context is the Windows Runtime metadata, object lifetime, asynchronous operation, activation, and apartment model.
Where it is encountered
- C++/WinRT, WRL, .NET projections, or native WinRT ABI calls.
- Runtime-class activation, WinMD reflection, asynchronous objects, observable state, or view lifecycle.
- Cross-thread and cross-apartment handoff between UI, ASTA, STA, MTA, broker, and background work.
The immediate focus is a mutable builder, transaction, or runtime object whose commit operation made its state final and disallows further modification or a second commit.
What to verify
Verify that the first commit completed, durable output is identifiable, and the caller is not confusing a failed commit attempt with a finalized object. That condition determines whether the same object can continue, a new object is required, or policy must change.
Correct handling and recovery
Use the committed output, create a new builder for additional changes, and make retry logic detect commit completion before repeating side effects.
Reconcile partial output and server-side effects before attempting the operation again.
Practical scenario
A package metadata builder commits successfully, but cleanup code calls Commit again. The second call is removed and post-commit modifications use a new builder.
Difference from nearby HRESULTs
It describes a finalized instance; RO_E_CLOSED describes an object whose entire usable lifetime has ended.
References
Looking for a different code? Search another status or error code.