| Предыдущий | Следующий |
| ERROR_THREAD_MODE_ALREADY_BACKGROUND | ERROR_PROCESS_MODE_ALREADY_BACKGROUND |
ERROR_THREAD_MODE_NOT_BACKGROUND
Поток не находится в фоновом режиме
ERROR_THREAD_MODE_NOT_BACKGROUND возвращается, когда код пытается выйти из фонового режима обработки для потока, который не был переведён в этот режим. Обычно это означает несбалансированные операции входа и выхода, а не сбой планировщика.
Типичные ошибки программирования
- Путь очистки вызывает операцию завершения фонового режима, хотя инициализация завершилась сбоем до входа в этот режим.
- Два компонента считают себя владельцами состояния планирования потока.
- Исключение или ранний возврат нарушает парность вызовов входа и выхода.
- Код пытается восстановить состояние в другом потоке, а не в том, который его изменил.
Диагностика
Регистрируйте идентификатор потока, место входа в фоновый режим и место попытки выхода. Небольшого защитного состояния для каждого потока обычно достаточно, чтобы найти несоответствие. Не рассматривайте ошибку как временную.
Правильная обработка
Объединяйте изменения фонового режима в одной области владения, предпочтительно с RAII или структурированным защитным объектом очистки. Выполняйте операцию выхода только после успешного соответствующего входа. Не используйте фоновый режим как глобальную политику процесса, если пониженный приоритет нужен только одному рабочему потоку.
Операционное влияние
Неудачный вызов выхода не доказывает, что поток застрял с низким приоритетом; он доказывает недопустимость запрошенного перехода состояния. Проверьте фактическую политику планирования до компенсирующих изменений.
Ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.