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

# XAsyncOp

> XAsyncOp

# XAsyncOp

代表非同步提供者的作業代碼。

## 語法

```cpp theme={null}
enum class XAsyncOp  : uint32_t  
{  
    Begin,  
    DoWork,  
    GetResult,  
    Cancel,  
    Cleanup  
}  
```

## 常數

| 常數 | 描述 |
| - | - |
| Begin | 叫用 [XAsyncBegin](/zh-TW/reference/system/xasyncprovider/functions/xasyncbegin) 時，會以此作業代碼叫用非同步提供者。<br />如果實作了此作業代碼，非同步提供者應透過呼叫 [XAsyncSchedule](/zh-TW/reference/system/xasyncprovider/functions/xasyncschedule) 或啟動外部非同步處理序 (例如重疊 I/O) 來開始其非同步工作。<br /> **注意** 針對此作業代碼執行的非同步工作不得封鎖執行緒。 |
| DoWork | 已呼叫 [XAsyncSchedule](/zh-TW/reference/system/xasyncprovider/functions/xasyncschedule) 排程工作時，會以此作業代碼叫用非同步提供者。<br />如果實作了此作業代碼，非同步提供者應執行其非同步工作，然後呼叫 [XAsyncComplete](/zh-TW/reference/system/xasyncprovider/functions/xasynccomplete)，並在 *requiredBufferSize* 中指定資料承載大小。如果需要完成其他工作，非同步提供者可以排程該工作，然後呼叫 `XAsyncComplete`，並在 *result* 中指定錯誤碼 E\_PENDING。 |
| GetResult | 非同步呼叫完成且使用者需要取得產生的資料承載後，會以此作業代碼叫用非同步提供者。<br />[XAsyncProviderData](/zh-TW/reference/system/xasyncprovider/structs/xasyncproviderdata) 的 *buffer* 和 *bufferSize* 欄位值已經過驗證。 |
| Cancel | 應取消非同步工作時，會以此作業代碼叫用非同步提供者。<br />非同步提供者應取消所有非同步工作，然後呼叫 [XAsyncComplete](/zh-TW/reference/system/xasyncprovider/functions/xasynccomplete)，並在 *result* 中指定錯誤碼 E\_ABORT。 |
| Cleanup | 非同步呼叫已完成或已取消，且可以清除內容中的資料時，會以此作業代碼叫用非同步提供者。 |

## 備註

非同步提供者的 [XAsyncProvider](/zh-TW/reference/system/xasyncprovider/functions/xasyncprovider) 回呼函式會被重複呼叫，而非同步提供者在每次呼叫時應執行的動作，是由每次呼叫所指定的作業代碼決定。`XAsyncOp` 代表非同步提供者可實作的作業代碼。\
非同步提供者應只實作 `XAsyncOp` 中執行非同步工作所需的作業代碼。例如，執行不需要清除之不可取消非同步 I/O 工作的非同步提供者，只需要實作 `XAsyncOp::GetResult`。

如需實作 `XAsyncOp` 中 `DoWork`、`GetResult` 和 `Cleanup` 作業代碼的非同步提供者範例，請參閱[非同步程式設計模型](/zh-TW/build/core-features/common/async/async-programming-model#heading-7)中的「非同步程式庫」一節。

## 需求

**標頭：** XAsyncProvider.h

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

## 另請參閱

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


## Related topics

- [XAsyncProvider 函式](/zh-TW/reference/system/xasyncprovider/functions/xasyncprovider.md)
- [AsyncProviderData](/zh-TW/reference/system/xasyncprovider/structs/xasyncproviderdata.md)
- [XAsyncProvider](/zh-TW/reference/system/xasyncprovider/xasyncprovider_members.md)
- [XAsyncBegin](/zh-TW/reference/system/xasyncprovider/functions/xasyncbegin.md)
- [XAsyncComplete](/zh-TW/reference/system/xasyncprovider/functions/xasynccomplete.md)
