SetThreadpoolWait 函数 (threadpoolapiset.h)

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

语法

void SetThreadpoolWait(
  [in, out]      PTP_WAIT  pwa,
  [in, optional] HANDLE    h,
  [in, optional] PFILETIME pftTimeout
);

参数

[in, out] pwa

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

[in, optional] h

句柄。

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

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

不支持互斥体。 如果传入互斥体的句柄,线程池将引发STATUS_THREADPOOL_HANDLE_EXCEPTION异常,ExceptionRecord.ExceptionInformation[0] 将等于STATUS_INVALID_PARAMETER_3。

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

如果此参数为非 NULL,则考虑设置等待。

[in, optional] pftTimeout

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

如果此参数指向 0,则等待将立即超时。 如果此参数为 NULL,则等待不会超时。

返回值

没有

言论

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

每次触发等待回调之前,都必须将事件重新注册到等待对象中。

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

例子

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

要求

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

另请参阅

CloseThreadpoolWait

CreateThreadpoolWait

SetThreadpoolWaitEx

线程池

WaitForThreadpoolWaitCallbacks