> ## 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.

# XTaskQueueDuplicateHandle

> XTaskQueueDuplicateHandle

# XTaskQueueDuplicateHandle

複製 XTaskQueueHandle 物件。

## 語法

```cpp theme={null}
HRESULT XTaskQueueDuplicateHandle(  
         XTaskQueueHandle queueHandle,  
         XTaskQueueHandle* duplicatedHandle  
)  
```

### 參數

*queueHandle*   \_In\_\
類型：XTaskQueueHandle

要參考的佇列。

*duplicatedHandle*   \_Out\_\
類型：XTaskQueueHandle\*

複製的佇列控制代碼。

### 傳回值

類型：HRESULT

HRESULT 成功或錯誤碼。

## 備註

請使用 [XTaskQueueCloseHandle](/zh-TW/reference/system/xtaskqueue/functions/xtaskqueueclosehandle) 關閉 **XTaskQueueHandle** 物件。

下列範例示範如何複製工作佇列控制代碼。如果您有長時間執行的工作，可能會想在該工作期間複製工作佇列控制代碼。這可防止任何呼叫 [XTaskQueueCloseHandle](/zh-TW/reference/system/xtaskqueue/functions/xtaskqueueclosehandle) 函式的人在您仍需要佇列時將其關閉。

```cpp theme={null}
void DuplicatingTaskQueueHandle()
{
    XTaskQueueHandle queue;

    HRESULT hr = XTaskQueueCreate(
        XTaskQueueDispatchMode::Manual, 
        XTaskQueueDispatchMode::Manual, 
        &queue);

    if (FAILED(hr))
    {
        printf("failed to create task queue: 0x%x\r\n", hr);
        return;
    }

    class LongRunningWork
    {
    public:
        HRESULT Initialize(XTaskQueueHandle queue)
        {
            return XTaskQueueDuplicateHandle(queue, &m_queue);
        }
        
        ~LongRunningWork()
        {
            if (m_queue != nullptr)
            {
                XTaskQueueCloseHandle(m_queue);
            }
        }

    private:
        XTaskQueueHandle m_queue = nullptr;
    };

    LongRunningWork work;
    hr = work.Initialize(queue);
    
    // Note that LongRunningWork's queue handle is still valid.
    XTaskQueueCloseHandle(queue);

    if (FAILED(hr))
    {
        printf("Failed to duplicate queue handle: 0x%x\r\n", hr);
    }
}
```

## 需求

**標頭：** XTaskQueue.h

**程式庫：** xgameruntime.lib

**支援的平台：** Windows、XBOX One 系列主機和 XBOX Series 主機

## 另請參閱

[XTaskQueue 成員](/zh-TW/reference/system/xtaskqueue/xtaskqueue_members)\
[非同步程式設計模型](/zh-TW/build/core-features/common/async/async-programming-model)\
[非同步工作佇列設計](/zh-TW/build/core-features/common/async/async-task-queue-design)


## Related topics

- [XTaskQueueDuplicateHandle](/reference/system/xtaskqueue/functions/xtaskqueueduplicatehandle.md)
- [XblGetAsyncQueue](/reference/live/xsapi-c/xbox_live_global_c/functions/xblgetasyncqueue.md)
- [XTaskQueue](/reference/system/xtaskqueue/xtaskqueue_members.md)
