> ## 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 um código de operação para um provedor assíncrono.

## Sintaxe

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

## Constantes

| Constante | Descrição |
| - | - |
| Begin | O provedor assíncrono é invocado com este código de operação quando [XAsyncBegin](/pt-BR/reference/system/xasyncprovider/functions/xasyncbegin) é invocado.<br />Se este código de operação for implementado, o provedor assíncrono deverá iniciar seu trabalho assíncrono, chamando [XAsyncSchedule](/pt-BR/reference/system/xasyncprovider/functions/xasyncschedule) ou iniciando um processo assíncrono externo, como E/S sobreposta.<br /> **OBSERVAÇÃO** O trabalho assíncrono realizado para este código de operação não deve bloquear o thread. |
| DoWork | O provedor assíncrono é invocado com este código de operação quando [XAsyncSchedule](/pt-BR/reference/system/xasyncprovider/functions/xasyncschedule) foi chamado para agendar trabalho.<br />Se este código de operação for implementado, o provedor assíncrono deverá realizar seu trabalho assíncrono e, em seguida, chamar [XAsyncComplete](/pt-BR/reference/system/xasyncprovider/functions/xasynccomplete), especificando o tamanho do conteúdo de dados em *requiredBufferSize*. Se for necessário realizar trabalho adicional, o provedor assíncrono poderá agendá-lo e, em seguida, chamar `XAsyncComplete`, especificando o código de erro E\_PENDING em *result*. |
| GetResult | O provedor assíncrono é invocado com este código de operação depois que uma chamada assíncrona é concluída e o usuário precisa obter o conteúdo de dados resultante.<br />Os valores dos campos *buffer* e *bufferSize* de [XAsyncProviderData](/pt-BR/reference/system/xasyncprovider/structs/xasyncproviderdata) já foram validados. |
| Cancel | O provedor assíncrono é invocado com este código de operação quando o trabalho assíncrono deve ser cancelado.<br />O provedor assíncrono deve cancelar todo o trabalho assíncrono e, em seguida, chamar [XAsyncComplete](/pt-BR/reference/system/xasyncprovider/functions/xasynccomplete), especificando o código de erro E\_ABORT em *result*. |
| Cleanup | O provedor assíncrono é invocado com este código de operação quando a chamada assíncrona é concluída ou cancelada e os dados no contexto podem ser limpos. |

## Comentários

A função de retorno de chamada [XAsyncProvider](/pt-BR/reference/system/xasyncprovider/functions/xasyncprovider) de um provedor assíncrono é chamada repetidamente, e o que esse provedor assíncrono deve fazer em cada chamada é determinado pelo código de operação especificado para cada chamada. `XAsyncOp` representa os códigos de operação que podem ser implementados por um provedor assíncrono.\
Um provedor assíncrono deve implementar apenas os códigos de operação de `XAsyncOp` necessários para realizar o trabalho assíncrono. Por exemplo, um provedor assíncrono que realiza trabalho de E/S assíncrona não cancelável e que não requer limpeza só precisa implementar `XAsyncOp::GetResult`.

Para obter um exemplo de provedor assíncrono que implementa os códigos de operação `DoWork`, `GetResult` e `Cleanup` de `XAsyncOp`, consulte a seção "Biblioteca assíncrona" em [Modelo de programação assíncrona](/pt-BR/build/core-features/common/async/async-programming-model#heading-7).

## Requisitos

**Cabeçalho:** XAsyncProvider.h

**Plataformas com suporte:** Windows, consoles da família XBOX One e consoles XBOX Series

## Confira também

[XAsyncProviderData](/pt-BR/reference/system/xasyncprovider/structs/xasyncproviderdata)\
[Membros de XAsyncProvider](/pt-BR/reference/system/xasyncprovider/xasyncprovider_members)\
[Modelo de programação assíncrona](/pt-BR/build/core-features/common/async/async-programming-model)


## Related topics

- [XAsyncOp](/ja-jp/reference/system/xasyncprovider/enums/xasyncop.md)
- [XAsyncProvider function](/reference/system/xasyncprovider/functions/xasyncprovider.md)
- [AsyncProviderData](/reference/system/xasyncprovider/structs/xasyncproviderdata.md)
- [XAsyncBegin](/reference/system/xasyncprovider/functions/xasyncbegin.md)
- [Función XAsyncProvider](/es/reference/system/xasyncprovider/functions/xasyncprovider.md)
