| Предыдущий | Следующий |
| RPC_S_SEC_PKG_ERROR | RPC_X_INVALID_ES_ACTION |
RPC_S_NOT_CANCELLED
Отмена была запрошена, но вызов остался неотменённым
RPC_S_NOT_CANCELLED указывает, что операция отмены не перевела целевой вызов в отменённое состояние. Возможность отмены зависит от состояния: вызов мог уже завершиться, ещё не допускать безопасной отмены из другого потока либо выполнять серверный код, который пока не обработал запрос неаварийной отмены.
Сопоставьте запрос отмены с исходным потоком, объектом асинхронного состояния и окончательным результатом завершения. Для асинхронных вызовов клиент всё равно должен завершить вызов и проверить его конечное состояние. На сервере длительные операции должны проверять отмену в безопасных точках. Не считайте, что отправка запроса отмены доказывает остановку или откат операции.
Что следует проверить
- Запишите состояние вызова непосредственно до и после запроса отмены.
- Убедитесь, что другой поток выполняет отмену только после успешного возврата инициирующего вызова.
- Проверьте, что серверная операция проверяет и учитывает отмену там, где это уместно.
Ссылки
- Microsoft: аварийная и неаварийная отмена асинхронных вызовов
- Microsoft: получение окончательного результата асинхронного вызова
- Microsoft: обработка ошибок асинхронного RPC
Нужно найти другой код? Найти другой код состояния или ошибки.