Что означает код HRESULT 0x8009803F (WINBIO_E_SESSION_HANDLE_CLOSED)?

 
Предыдущий Следующий
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


Нужно найти другой код? Найти другой код состояния или ошибки.