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

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

Синтаксис

void SetThreadpoolTimer(
  [in, out]      PTP_TIMER pti,
  [in, optional] PFILETIME pftDueTime,
  [in]           DWORD     msPeriod,
  [in]           DWORD     msWindowLength
);

Параметры

[in, out] pti

Указатель на структуру TP_TIMER , которая определяет объект таймера для задания. Функция CreateThreadpoolTimer возвращает этот указатель.

[in, optional] pftDueTime

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

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

Таймер устанавливается, если параметр pftDueTime не равен NULL.

[in] msPeriod

Период таймера в миллисекундах. Если этот параметр равен нулю, таймер получает сигнал один раз. Если этот параметр больше нуля, таймер является периодическим. Периодический таймер автоматически активируется при каждом истечении периода, пока таймер не будет отменен.

[in] msWindowLength

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

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

None

Remarks

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

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

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

Если время выполнения, указанное в параметре pftDueTime , равно нулю, срок действия таймера истекает немедленно.

Чтобы скомпилировать приложение, использующее эту функцию, определите _WIN32_WINNT как 0x0600 или выше.

Примеры

Пример см. в разделе Использование функций пула потоков.

Требования

Требование Значение
Минимальная версия клиента Windows Vista [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2008 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header threadpoolapiset.h (включая Windows.h в Windows 7, Windows Server 2008 Windows Server 2008 R2)
Библиотека Kernel32.lib
DLL Kernel32.dll

См. также

CloseThreadpoolTimer

CreateThreadpoolTimer

IsThreadpoolTimerSet

Пулы потоков

WaitForThreadpoolTimerCallbacks