| Предыдущий | Следующий |
| MQ_ERROR_MISSING_CONNECTOR_TYPE | MQ_ERROR_TRANSACTION_ENLIST |
MQ_ERROR_STALE_HANDLE
Что означает MQ_ERROR_STALE_HANDLE
MQ_ERROR_STALE_HANDLE (0xC00E0056) — Служба Message Queuing была перезапущена. Все открытые дескрипторы очередей следует закрыть.
Дескриптор MSMQ относится к конкретному времени жизни очереди и локальной службы Queue Manager. Удаление/пересоздание очереди или перезапуск MSMQ не «оживляют» старый handle, даже если имя пути после этого выглядит тем же.
Что проверить
- Сопоставьте время создания handle с перезапуском службы Message Queuing: после перезапуска открытые до него дескрипторы должны считаться недействительными.
- Закройте старые handles и явно откройте очередь заново; простое повторение операции на прежнем значении handle не является восстановлением.
- Проверьте код reconnect/retry на гонки: один поток не должен продолжать receive/send через handle, который другой поток уже заменил.
Как подтвердить исправление
Повторяйте исходный сценарий с новым корректно открытым объектом и отдельно проверяйте конкурентный путь. Простое исчезновение ошибки после перезапуска службы не доказывает устранение гонки или ошибки времени жизни.
Технические ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.