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

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

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

[in] msPeriod

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

[in] msWindowLength

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

返回值

备注

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

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

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

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

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

示例

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

要求

要求
最低受支持的客户端 Windows Vista [桌面应用 | UWP 应用]
最低受支持的服务器 Windows Server 2008 [桌面应用 | UWP 应用]
目标平台 Windows
标头 threadpoolapiset.h (包括 Windows 7 上的 Windows.h、Windows Server 2008 Windows Server 2008 R2)
Library Kernel32.lib
DLL Kernel32.dll

另请参阅

CloseThreadpoolTimer

CreateThreadpoolTimer

IsThreadpoolTimerSet

线程池

WaitForThreadpoolTimerCallbacks