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

# XAsyncBegin

> XAsyncBegin

# XAsyncBegin

初始化 [XAsyncBlock](/zh-TW/reference/system/xasync/structs/xasyncblock)，並由非同步提供者開始非同步工作。

## 語法

```cpp theme={null}
HRESULT XAsyncBegin(  
         XAsyncBlock* asyncBlock,  
         void* context,  
         const void* identity,  
         const char* identityName,  
         XAsyncProvider* provider  
)  
```

### 參數

*asyncBlock*   \_Inout\_\
類型：[XAsyncBlock\*](/zh-TW/reference/system/xasync/structs/xasyncblock)

指向保存非同步呼叫資料之 [XAsyncBlock](/zh-TW/reference/system/xasync/structs/xasyncblock) 的指標。

*context*   \_In\_opt\_\
類型：void\*

選擇性。要儲存在傳遞給 [XAsyncProvider](/zh-TW/reference/system/xasyncprovider/functions/xasyncprovider) 回呼函式之 [XAsyncProviderData](/zh-TW/reference/system/xasyncprovider/structs/xasyncproviderdata) 物件中的內容指標。

*identity*   \_In\_opt\_\
類型：void\*

選擇性。指向可用來識別非同步呼叫之任意權杖的指標。

*identityName*   \_In\_opt\_\
類型：char\*

選擇性。為提供非同步呼叫之函式命名的字串。此參數的值通常設定為 `__FUNCTION__` 編譯器巨集。

*provider*   \_In\_\
類型：[XAsyncProvider](/zh-TW/reference/system/xasyncprovider/functions/xasyncprovider)\*

指向要為非同步呼叫叫用之 [XAsyncProvider](/zh-TW/reference/system/xasyncprovider/functions/xasyncprovider) 回呼函式的指標。

### 傳回值

類型：[HRESULT](https://learn.microsoft.com/openspecs/windows_protocols/ms-erref/0642cb2f-2075-4469-918c-4441e69c548a)

如果成功，則傳回 `S_OK`；否則傳回錯誤碼。如需錯誤碼清單，請參閱[錯誤碼](/zh-TW/reference/errorcodes)。

## 備註

叫用 `XAsyncBegin` 表示非同步提供者應開始非同步工作。叫用 `XAsyncBegin` 之後，其他 [XAsyncProvider](/zh-TW/reference/system/xasyncprovider/xasyncprovider_members) 函式 (例如 [XAsyncGetResult](/zh-TW/reference/system/xasyncprovider/functions/xasyncgetresult)) 就會提供有意義的資料。

叫用 `XAsyncBegin` 時，會叫用 *provider* 中指定的回呼函式，並在 [XAsyncProvider](/zh-TW/reference/system/xasyncprovider/functions/xasyncprovider) 的 *op* 參數中指定 [XAsyncOp::Begin](/zh-TW/reference/system/xasyncprovider/enums/xasyncop)。如果回呼函式實作了此作業代碼，就應透過呼叫 [XAsyncSchedule](/zh-TW/reference/system/xasyncprovider/functions/xasyncschedule) 或透過外部方式開始其非同步工作。`XAsyncBegin` 傳回之後，會假設回呼函式已在系統定義的執行緒上開始非同步工作。

<Note>*provider* 中指定的回呼函式會在 `XAsyncBegin` 呼叫鏈中同步處理。回呼函式執行的非同步工作不得封鎖執行緒。</Note>

您可以使用 *identity* 和 *identityName* 參數來識別和管理對回呼函式不相符的 `XAsyncOp::Begin` 和 `XAsyncOp::GetResult` 呼叫。一般而言，*identity* 的值會設定為叫用 `XAsyncBegin` 之函式的函式指標，而 *identityName* 的值會設定為 `__FUNCTION__` 編譯器巨集。

## 需求

**標頭：** XAsyncProvider.h

**程式庫：** xgameruntime.lib

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

## 概念文件

* [設定自訂提供者](/zh-TW/build/core-features/common/async/async-libraries/async-library-xasyncprovider-example-setup-custom-provider)
* [XAsyncProvider 程式庫概觀](/zh-TW/build/core-features/common/async/async-libraries/async-library-xasyncprovider)
* [非同步程式設計模型](/zh-TW/build/core-features/common/async/async-programming-model)

## 另請參閱

[XAsyncProvider 成員](/zh-TW/reference/system/xasyncprovider/xasyncprovider_members)\
[XAsyncProviderData](/zh-TW/reference/system/xasyncprovider/structs/xasyncproviderdata)\
[XAsyncProvider](/zh-TW/reference/system/xasyncprovider/functions/xasyncprovider)\
[XAsyncGetResult](/zh-TW/reference/system/xasyncprovider/functions/xasyncgetresult)\
[非同步程式設計模型](/zh-TW/build/core-features/common/async/async-programming-model)


## Related topics

- [XAsyncBegin](/reference/system/xasyncprovider/functions/xasyncbegin.md)
- [XAsyncComplete](/reference/system/xasyncprovider/functions/xasynccomplete.md)
- [XAsyncSchedule](/reference/system/xasyncprovider/functions/xasyncschedule.md)
