| Previous | Next |
| RO_E_EXCLUSIVE_WRITE | RO_E_ERROR_STRING_NOT_FOUND |
RO_E_CHANGE_NOTIFICATION_IN_PROGRESS
Operation is prohibited during change notification
RO_E_CHANGE_NOTIFICATION_IN_PROGRESS is HRESULT 2147483669 (0x80000015) from winerror.h. The documented description is “Operation is prohibited during change notification.” 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 reentrant mutation or query that the object forbids while it is notifying observers about an earlier change. Keep this result attached to that operation; the same numeric severity outside the owning API does not supply enough context.
What to verify
Verify that the active notification, callback stack, and deferred operation are correlated so the caller can execute after notification unwinds. This distinction prevents it from being misclassified as corruption, network failure, or a reason for an unsafe automatic retry.
Correct handling and recovery
Queue the work for a later dispatcher turn or post-notification phase. Keep notification handlers short and avoid recursively mutating the same object.
Practical scenario
A collection-changed handler immediately edits the same observable collection. The application posts the edit to the dispatcher and applies it after the current notification.
Difference from nearby HRESULTs
It is a reentrancy guard; RO_E_EXCLUSIVE_WRITE is a writer-ownership conflict that may occur outside callbacks.
Developer and administrator guidance
Change the smallest component, identity, ACL, package, or threading boundary that the evidence identifies, then reproduce the same operation.
References
Looking for a different code? Search another status or error code.
