Функция SetThreadpoolWaitEx (threadpoolapiset.h)

Задает объект wait, заменяя предыдущий объект ожидания, если таковой есть. Рабочий поток вызывает функцию обратного вызова объекта wait после того, как дескриптор получает сигнал или по истечении указанного времени ожидания.

Синтаксис

BOOL SetThreadpoolWaitEx(
  [in, out]      PTP_WAIT  pwa,
  [in, optional] HANDLE    h,
  [in, optional] PFILETIME pftTimeout,
                 PVOID     Reserved
);

Параметры

[in, out] pwa

Указатель на структуру TP_WAIT , которая определяет объект ожидания. Функция CreateThreadpoolWait возвращает этот указатель.

[in, optional] h

Дескриптор.

Если этот параметр имеет значение NULL, объект wait перестанет ставить в очередь новые обратные вызовы (но обратные вызовы, уже помещенные в очередь, по-прежнему будут выполняться).

Если этот параметр не имеет значение NULL, он должен ссылаться на допустимый объект для ожидания.

Если этот дескриптор закрыт, пока ожидание еще не завершено, поведение функции не определено. Если ожидание по-прежнему ожидается и дескриптор должен быть закрыт, используйте CloseThreadpoolWait , чтобы отменить ожидание, а затем закрыть дескриптор.

Ожидание считается заданным, если этот параметр не равен NULL.

[in, optional] pftTimeout

Указатель на структуру FILETIME , указывающую абсолютное или относительное время ожидания. Если этот параметр указывает на положительное значение, он указывает абсолютное время с 1 января 1601 года (UTC) в 100-наносекундных интервалах. Если этот параметр указывает на отрицательное значение, он указывает время ожидания относительно текущего времени. Если этот параметр указывает на ноль, время ожидания истекает немедленно. Дополнительные сведения о значениях времени см. в разделе Время файла.

Если этот параметр имеет значение NULL, время ожидания не истекает.

Reserved

Зарезервировано. Должен иметь значение NULL.

Возвращаемое значение

Возвращает значение TRUE, если ожидание было задано ранее и было отменено. В противном случае возвращает значение FALSE.

Если предыдущее состояние ожидания было "задано", а функция возвращает значение FALSE, то обратный вызов выполняется или начинается. Дополнительные сведения см. в комментариях.

Комментарии

Объект wait может ожидать только одного дескриптора. Установка дескриптора для объекта ожидания заменяет предыдущий дескриптор ожидания, если таковой имеется.

В некоторых случаях функции обратного вызова могут выполняться после того, как приложение закрывает таймер пула потоков. Чтобы предотвратить такое поведение, приложение должно выполнить действия, описанные в разделе CloseThreadpoolWait.

Если время ожидания, заданное параметром pftTimeout , является относительным, время, которое система проводит в спящем режиме или гибернации, не засчитывается на истечение срока ожидания. Ожидание сигнализируется, когда совокупное время, затраченное системой в состоянии бодрствования, равно времени ожидания. Если время ожидания, заданное параметром pftTimeout , является абсолютным, то время, которое система проводит в спящем режиме или гибернации, учитывается до истечения срока ожидания. Если срок ожидания истекает, когда система находится в спящем режиме, то при выходе системы из спящего режима сигнализируется о ожидании.

Требования

Требование Значение
Минимальная версия клиента Windows 8 [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2012 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header threadpoolapiset.h
Библиотека Kernel32.lib
DLL Kernel32.dll

См. также

CloseThreadpoolWait

CreateThreadpoolWait

Пулы потоков

WaitForThreadpoolWaitCallbacks