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

Representa un código de operación para un proveedor asincrónico.

## Sintaxis

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

## Constantes

| Constante | Descripción                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Begin     | El proveedor asincrónico se invoca con este código de operación cuando se invoca [XAsyncBegin](/reference/system/xasyncprovider/functions/xasyncbegin).<br />Si se implementa este código de operación, el proveedor asincrónico debe iniciar su trabajo asincrónico, ya sea llamando a [XAsyncSchedule](/reference/system/xasyncprovider/functions/xasyncschedule) o iniciando un proceso asincrónico externo, como la E/S superpuesta.<br /> **NOTA** El trabajo asincrónico realizado para este código de operación no debe bloquear el subproceso.                                                                                                                     |
| DoWork    | El proveedor asincrónico se invoca con este código de operación cuando se ha llamado a [XAsyncSchedule](/reference/system/xasyncprovider/functions/xasyncschedule) para programar trabajo.<br />Si se implementa este código de operación, el proveedor asincrónico debe realizar su trabajo asincrónico y, a continuación, llamar a [XAsyncComplete](/reference/system/xasyncprovider/functions/xasynccomplete), especificando el tamaño de la carga de datos en *requiredBufferSize*. Si es necesario realizar trabajo adicional, el proveedor asincrónico puede programarlo y luego llamar a `XAsyncComplete`, especificando el código de error E\_PENDING en *result*. |
| GetResult | El proveedor asincrónico se invoca con este código de operación después de que se complete una llamada asincrónica y el usuario necesite obtener la carga de datos resultante.<br />Los valores de los campos *buffer* y *bufferSize* de [XAsyncProviderData](/reference/system/xasyncprovider/structs/xasyncproviderdata) ya se han validado.                                                                                                                                                                                                                                                                                                                             |
| Cancel    | El proveedor asincrónico se invoca con este código de operación cuando el trabajo asincrónico se debe cancelar.<br />El proveedor asincrónico debe cancelar todo el trabajo asincrónico y, a continuación, llamar a [XAsyncComplete](/reference/system/xasyncprovider/functions/xasynccomplete), especificando el código de error E\_ABORT en *result*.                                                                                                                                                                                                                                                                                                                    |
| Cleanup   | El proveedor asincrónico se invoca con este código de operación cuando la llamada asincrónica se completa o se cancela y los datos del contexto se pueden limpiar.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |

## Comentarios

La función de devolución de llamada [XAsyncProvider](/reference/system/xasyncprovider/functions/xasyncprovider) de un proveedor asincrónico se llama repetidamente, y lo que ese proveedor asincrónico debe hacer en cada llamada viene determinado por el código de operación especificado para cada llamada. `XAsyncOp` representa los códigos de operación que puede implementar un proveedor asincrónico.\
Un proveedor asincrónico solo debe implementar los códigos de operación de `XAsyncOp` necesarios para realizar el trabajo asincrónico. Por ejemplo, un proveedor asincrónico que realiza trabajo de E/S asincrónica no cancelable y que no requiere limpieza solo necesita implementar `XAsyncOp::GetResult`.

Para ver un ejemplo de un proveedor asincrónico que implementa los códigos de operación `DoWork`, `GetResult` y `Cleanup` de `XAsyncOp`, consulte la sección "Async Library" en [Modelo de programación asincrónica](/build/core-features/common/async/async-programming-model#heading-7).

## Requisitos

**Encabezado:** XAsyncProvider.h

**Plataformas compatibles:** Windows, consolas de la familia XBOX One y consolas XBOX Series

## Consulte también

[XAsyncProviderData](/reference/system/xasyncprovider/structs/xasyncproviderdata)\
[Miembros de XAsyncProvider](/reference/system/xasyncprovider/xasyncprovider_members)\
[Modelo de programación asincrónica](/build/core-features/common/async/async-programming-model)


## Related topics

- [Función XAsyncProvider](/es/reference/system/xasyncprovider/functions/xasyncprovider.md)
- [AsyncProviderData](/es/reference/system/xasyncprovider/structs/xasyncproviderdata.md)
- [XAsyncProvider](/es/reference/system/xasyncprovider/xasyncprovider_members.md)
- [XAsyncBegin](/es/reference/system/xasyncprovider/functions/xasyncbegin.md)
- [XAsyncComplete](/es/reference/system/xasyncprovider/functions/xasynccomplete.md)
