> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 操作說明：使用工作佇列等候程式

> 操作說明：使用工作佇列等候程式

## 範例

您可以向工作佇列註冊 Win32 核心控制代碼。當控制代碼變成已發出訊號狀態時，您的回呼就會提交至佇列。一般而言，您會建立自動重設事件以用於發出訊號。如果控制代碼不是自動重設，則只要控制代碼處於已發出訊號狀態，每當目前的回呼完成時就會提交新的回呼。

下列範例示範如何使用工作佇列等候程式。

```c++ theme={null}
void CreatingTaskQueueWaiter()  
{  
    HANDLE waitEvent = CreateEvent(nullptr, FALSE, FALSE, nullptr);  
    if (waitEvent == nullptr)  
    {  
        printf("Error creating wait handle: %d\r\n", GetLastError());  
        return;  
    }  
  
    XTaskQueueHandle queue;  
  
    HRESULT hr = XTaskQueueCreate(  
        XTaskQueueDispatchMode::ThreadPool,  
        XTaskQueueDispatchMode::ThreadPool,  
        &queue);  
  
    if (FAILED(hr))  
    {  
        printf("Error creating task queue: %x\n", hr);  
        CloseHandle(waitEvent);  
        return;  
    }  
  
    auto callback = [](void*, bool)  
    {  
        printf("Callback invoked.\r\n");  
    };  
  
    XTaskQueueRegistrationToken token;  
  
    hr = XTaskQueueRegisterWaiter(  
        queue,  
        XTaskQueuePort::Completion,  
        waitEvent,  
        nullptr,  
        callback,  
        &token);  
  
    if (FAILED(hr))  
    {  
        printf("Error registering task queue waiter: %x\n", hr);  
        CloseHandle(waitEvent);  
        XTaskQueueCloseHandle(queue);  
        return;  
    }  
  
    // Now, whenever our wait event becomes signaled, the callback will be called.  
    for (uint32_t i = 0; i < 5; i++)  
    {  
        SetEvent(waitEvent);  
        Sleep(100);  
    }  
  
    // Note: Unregistering the waiter is optional.  
    XTaskQueueUnregisterWaiter(queue, token);  
    XTaskQueueCloseHandle(queue);  
    CloseHandle(waitEvent);  
}  
```

## 範例輸出

```
Callback invoked.  
Callback invoked.  
Callback invoked.  
Callback invoked.  
Callback invoked.  
```

## 另請參閱

[設計工作佇列](/zh-TW/build/core-features/common/async/async-task-queue-design)


## Related topics

- [GDK 範例](/zh-TW/home/setup-install/samples.md)
- [Direct3D 12 程式設計指南](/zh-TW/build/gdk-and-engines/guides/directx-12-programming-guide.md)
- [PlayFab Party 版本資訊](/zh-TW/services/playfab/multiplayer/networking/release-notes.md)
- [PlayFab Multiplayer C++ SDK 版本資訊](/zh-TW/services/playfab/multiplayer/lobby/lobby-matchmaking-sdks/lobby-and-matchmaking-release-notes.md)
- [如何：使用任务队列等待器](/zh-CN/build/core-features/common/async/async-task-queue-design-howto/using-task-queue-waiter.md)
