Поделиться через


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

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

Синтаксис

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, объект ожидания перестанет очереди новых вызовов (но обратные вызовы, уже в очереди, по-прежнему будут возникать).

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

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

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

[in, optional] pftTimeout

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

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

Reserved

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

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

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

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

Замечания

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

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

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

Требования

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

См. также

CloseThreadpoolWait

CreateThreadpoolWait

Пулы потоков

WaitForThreadpoolWaitCallbacks