| Предыдущий | Следующий |
| WINBIO_E_INCORRECT_SESSION_TYPE | WINBIO_E_DEADLOCK_DETECTED |
WINBIO_E_SESSION_HANDLE_CLOSED
WINBIO_E_SESSION_HANDLE_CLOSED — ошибка времени жизни: код использует сеанс WinBio после выполнения пути закрытия. Особенно легко она проявляется в асинхронных сеансах, поскольку уведомления о завершении и отмена могут пересекаться с логикой завершения работы приложения.
Сериализуйте завершение сеанса
- Назначьте один компонент владельцем вызова
WinBioCloseSessionи отражайте повторные запросы закрытия в журнале. - До завершения прекратите запуск новых операций и используйте
WinBioWait, если модель сеанса требует дождаться завершения или отмены ожидающих операций. - Убедитесь, что обратные вызовы повторно не входят в код, который назначает работу дескриптору, уже помеченному другим потоком как закрытый.
Microsoft документирует различное поведение закрытия синхронных и асинхронных дескрипторов; само асинхронное закрытие завершается через настроенный канал уведомлений. Поэтому состояния «закрытие запрошено» и «сеанс больше нельзя использовать» должны быть аккуратно представлены в состоянии приложения. Повторное открытие сеанса может временно скрыть гонку, но не исправит наличие нескольких владельцев старого дескриптора.
WinBioCloseSession · WinBioWait
Нужно найти другой код? Найти другой код состояния или ошибки.
