SetThreadpoolWaitEx 函数 (threadpoolapiset.h)

设置等待对象,替换上一个等待对象(如果有)。 工作线程在句柄发出信号或指定的超时过期后调用等待对象的回调函数。

Syntax

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

如果此参数为 NULL,则等待不会超时。

Reserved

预留。 必须为 NULL。

返回值

如果之前设置了等待并已取消,则返回 TRUE。 否则返回 FALSE。

如果等待以前的状态为“set”,并且函数返回 FALSE,则回调正在进行或即将开始。 请参阅备注以进一步讨论。

注解

等待对象只能等待一个句柄。 设置等待对象的句柄将替换上一个等待句柄(如果有)。

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

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

要求

Requirement 价值
最低支持的客户端 Windows 8 [桌面应用 |UWP 应用]
支持的最低服务器 Windows Server 2012 [桌面应用 |UWP 应用]
目标平台 Windows操作系统
Header threadpoolapiset.h
Library Kernel32.lib
DLL Kernel32.dll

另请参阅

CloseThreadpoolWait

CreateThreadpoolWait

线程池

WaitForThreadpoolWaitCallbacks