SetThreadpoolTimer 函数 (threadpoolapiset.h)

设置计时器对象,替换上一个计时器(如果有)。 工作线程在指定的超时到期后调用计时器对象的回调。

Syntax

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 结构的指针,该结构指定计时器应过期的绝对时间或相对时间。 如果为正或零,则表示自 1601 年 1 月 1 日(UTC)以来的绝对时间(UTC),以 100 纳秒为单位测量。 如果为负数,则表示相对于当前时间等待的时间量。 有关时间值的详细信息,请参阅 文件时间

如果此参数为 NULL,计时器对象将停止对新回调进行排队(但已排队的回调仍将发生)。

如果 pftDueTime 参数为非 NULL,则设置计时器。

[in] msPeriod

计时器周期(以毫秒为单位)。 如果此参数为零,计时器将发出一次信号。 如果此参数大于零,则计时器是定期的。 定期计时器会在时间过后自动重新激活,直到计时器取消为止。

[in] msWindowLength

系统在调用计时器回调之前可以延迟的最大时间。 如果未将此参数设置为零,则系统可以批量调用以节省电源。

返回值

None

注解

设置计时器将取消上一个计时器(如果有)。

在某些情况下,在应用程序关闭线程池计时器后,回调函数可能会运行。 若要防止此行为,应用程序应遵循 CloseThreadpoolTimer 中所述的步骤。

如果 pftDueTime 指定的到期时间相对,则系统处于睡眠或休眠状态的时间不计入计时器到期时间。 当系统处于唤醒状态的累积时间等于计时器的相对到期时间或时间段时,计时器将发出信号。 如果 pftDueTime 指定的到期时间是绝对的,则系统处于睡眠或休眠状态的时间计入计时器的到期时间。 如果计时器在系统休眠时过期,则在系统唤醒时立即发出计时器信号。

如果 pftDueTime 指定的截止日期为零,计时器将立即过期。

若要编译使用此函数的应用程序,请将_WIN32_WINNT定义为0x0600或更高版本。

例子

有关示例,请参阅 “使用线程池函数”。

要求

Requirement 价值
最低支持的客户端 Windows Vista [桌面应用 |UWP 应用]
支持的最低服务器 Windows Server 2008 [桌面应用 |UWP 应用]
目标平台 Windows操作系统
Header threadpoolapiset.h (包括 Windows 7 上的 Windows.h、Windows Server 2008 Windows Server 2008 R2)
Library Kernel32.lib
DLL Kernel32.dll

另请参阅

CloseThreadpoolTimer

CreateThreadpoolTimer

IsThreadpoolTimerSet

线程池

WaitForThreadpoolTimerCallbacks