> ## 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](/reference/system/xasyncprovider/functions/xasyncbegin)이 호출될 때 비동기 공급자가 이 작업 코드로 호출됩니다.<br />이 작업 코드가 구현된 경우 비동기 공급자는 [XAsyncSchedule](/reference/system/xasyncprovider/functions/xasyncschedule)을 호출하거나 오버랩된 I/O와 같은 외부 비동기 프로세스를 시작하여 비동기 작업을 시작해야 합니다.<br /> **참고** 이 작업 코드에 대해 수행되는 비동기 작업은 스레드를 차단해서는 안 됩니다.                                                                           |
| DoWork    | 작업을 예약하기 위해 [XAsyncSchedule](/reference/system/xasyncprovider/functions/xasyncschedule)이 호출되었을 때 비동기 공급자가 이 작업 코드로 호출됩니다.<br />이 작업 코드가 구현된 경우 비동기 공급자는 비동기 작업을 수행한 다음 *requiredBufferSize*에 데이터 페이로드 크기를 지정하여 [XAsyncComplete](/reference/system/xasyncprovider/functions/xasynccomplete)를 호출해야 합니다. 추가 작업을 수행해야 하는 경우 비동기 공급자는 이를 예약한 다음 *result*에 E\_PENDING 오류 코드를 지정하여 `XAsyncComplete`를 호출할 수 있습니다. |
| GetResult | 비동기 호출이 완료되고 사용자가 결과 데이터 페이로드를 가져와야 할 때 비동기 공급자가 이 작업 코드로 호출됩니다.<br />[XAsyncProviderData](/reference/system/xasyncprovider/structs/xasyncproviderdata)의 *buffer* 및 *bufferSize* 필드의 값이 유효성 검사되었습니다.                                                                                                                                                                                                      |
| Cancel    | 비동기 작업을 취소해야 할 때 비동기 공급자가 이 작업 코드로 호출됩니다.<br />비동기 공급자는 모든 비동기 작업을 취소한 다음 *result*에 E\_ABORT 오류 코드를 지정하여 [XAsyncComplete](/reference/system/xasyncprovider/functions/xasynccomplete)를 호출해야 합니다.                                                                                                                                                                                                           |
| Cleanup   | 비동기 호출이 완료되거나 취소되고 컨텍스트의 데이터를 정리할 수 있을 때 비동기 공급자가 이 작업 코드로 호출됩니다.                                                                                                                                                                                                                                                                                                                                         |

## 설명

비동기 공급자에 대한 [XAsyncProvider](/reference/system/xasyncprovider/functions/xasyncprovider) 콜백 함수는 반복적으로 호출되며, 각 호출에서 해당 비동기 공급자가 무엇을 해야 하는지는 각 호출에 대해 지정된 작업 코드에 의해 결정됩니다. `XAsyncOp`는 비동기 공급자가 구현할 수 있는 작업 코드를 나타냅니다.\
비동기 공급자는 비동기 작업을 수행하는 데 필요한 `XAsyncOp`의 작업 코드만 구현해야 합니다. 예를 들어, 정리가 필요하지 않은 취소할 수 없는 비동기 I/O 작업을 수행하는 비동기 공급자는 `XAsyncOp::GetResult`만 구현하면 됩니다.

`XAsyncOp`의 `DoWork`, `GetResult`, `Cleanup` 작업 코드를 구현하는 비동기 공급자 예제는 [비동기 프로그래밍 모델](/build/core-features/common/async/async-programming-model#heading-7)의 "Async Library" 섹션을 참조하세요.

## 요구 사항

**헤더:** XAsyncProvider.h

**지원되는 플랫폼:** Windows, XBOX One 제품군 콘솔 및 XBOX Series 콘솔

## 함께 보기

[XAsyncProviderData](/reference/system/xasyncprovider/structs/xasyncproviderdata)\
[XAsyncProvider 멤버](/reference/system/xasyncprovider/xasyncprovider_members)\
[비동기 프로그래밍 모델](/build/core-features/common/async/async-programming-model)


## Related topics

- [AsyncProviderData](/ko/reference/system/xasyncprovider/structs/xasyncproviderdata.md)
- [XAsyncProvider function](/ko/reference/system/xasyncprovider/functions/xasyncprovider.md)
- [XAsyncProvider](/ko/reference/system/xasyncprovider/xasyncprovider_members.md)
- [XAsyncBegin](/ko/reference/system/xasyncprovider/functions/xasyncbegin.md)
- [XAsyncComplete](/ko/reference/system/xasyncprovider/functions/xasynccomplete.md)
