設定等候物件,取代先前的等候物件 (如果有的話)。 背景工作執行緒會在控制碼變成訊號或指定的逾時到期之後呼叫等候物件的回呼函式。
語法
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 結構的指標,指定等候作業應該逾時的絕對或相對時間。如果此參數指向正值,則表示自 1601 年 1 月 1 日 (UTC) 以來的絕對時間,間隔為 100 奈秒。 如果此參數指向負值,則表示相對於目前時間等待的時間量。 如果此參數指向零,則等待會立即逾時。 如需時間值的詳細資訊,請參閱 檔案時間。
如果此參數為 Null,則等候不會逾時。
Reserved
已保留。 必須為 Null。
返回值
如果先前已設定等候並已取消,則會傳回 TRUE。 否則會傳回 FALSE。
如果等候的先前狀態是 “set”,且函式傳回 FALSE,則回呼正在進行中或即將開始。 請參閱備註以進行進一步討論。
備註
等候物件只能等候一個控制碼。 設定等候物件的控制碼會取代先前的等候控制碼 (如果有的話)。
在某些情況下,回呼函式可能會在應用程式關閉執行緒集區計時器之後執行。 若要防止此行為,應用程式應該遵循 CloseThreadpoolWait 中所述的步驟。
如果 pftTimeout 指定的逾時是相對的,則系統在睡眠或休眠中花費的時間不會計入等候到期。 當系統在喚醒狀態中花費的累積經歷時間量等於等待的相對逾時時,就會發出等候訊號。 如果 pftTimeout 指定的逾時是絕對的,則系統在睡眠或休眠中花費的時間會計入等候到期。 如果等待在系統睡眠狀態時到期,則在系統喚醒時會立即發出等候訊號。
需求
| Requirement | 價值觀 |
|---|---|
| 最低支援的用戶端 | Windows 8 [傳統型應用程式 |UWP 應用程式] |
| 支援的最低伺服器 | Windows Server 2012 [傳統型應用程式 |UWP 應用程式] |
| 目標平臺 | 窗戶 |
| Header | 執行緒池apiset.h |
| Library | Kernel32.lib |
| DLL | Kernel32.dll |