| Предыдущий | Следующий |
| MQ_ERROR_INVALID_PARAMETER | MQ_ERROR_OPERATION_CANCELLED |
MQ_ERROR_INVALID_HANDLE
Что означает MQ_ERROR_INVALID_HANDLE
MQ_ERROR_INVALID_HANDLE — Переданный дескриптор очереди недействителен для запрошенной операции: он мог не открыться, уже быть закрыт или относиться к предыдущему времени жизни очереди или службы.
Queue handle MSMQ действителен только после успешного открытия и до закрытия либо перезапуска службы, который сделал его устаревшим. Числовое значение дескриптора само по себе не доказывает, что он всё ещё относится к текущей очереди.
Что проверить
- Сопоставьте место успешного MQOpenQueue с конкретным handle и каждым последующим close; исключите двойное закрытие и использование после close.
- Проверьте гонки между потоками, где один поток заменяет или закрывает handle, пока другой выполняет send/receive.
- Если служба MSMQ перезапускалась, считайте все ранее открытые handles недействительными и открывайте очередь заново.
Как подтвердить исправление
После исправления тест должен переживать повторные open/close и контролируемый перезапуск MSMQ без обращения к старому дескриптору.
Технические ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.
