SetThreadpoolWaitEx 函数 (threadpoolapiset.h)

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

语法

BOOL SetThreadpoolWaitEx(
  [in, out]      PTP_WAIT  pwa,
  [in, optional] HANDLE    h,
  [in, optional] PFILETIME pftTimeout,
                 PVOID     Reserved
);

参数

[in, out] pwa

指向定义 wait 对象的 TP_WAIT 结构的指针。 CreateThreadpoolWait 函数返回此指针。

[in, optional] h

句柄。

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

如果此参数不为 NULL,则必须引用有效的可等待对象。

如果在等待仍处于挂起状态时关闭此句柄,则函数的行为未定义。 如果等待仍处于挂起状态并且必须关闭句柄,请使用 CloseThreadpoolWait 取消等待,然后关闭句柄。

如果此参数为非 NULL,则将等待视为设置。

[in, optional] pftTimeout

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

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

Reserved

保留。 必须为 NULL。

返回值

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

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

注解

等待对象只能等待一个句柄。 为等待对象设置句柄会替换以前的等待句柄(如果有)。

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

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

要求

要求
最低受支持的客户端 Windows 8 [桌面应用 |UWP 应用]
最低受支持的服务器 Windows Server 2012 [桌面应用 |UWP 应用]
目标平台 Windows
标头 threadpoolapiset.h
Library Kernel32.lib
DLL Kernel32.dll

另请参阅

CloseThreadpoolWait

CreateThreadpoolWait

线程池

WaitForThreadpoolWaitCallbacks