> ## Documentation Index
> Fetch the complete documentation index at: https://docs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Executar tarefa de API do Microsoft Game Development Kit (GDK)

> Veja como chamar uma API assíncrona do GDK, como XUserAddAsync, com um XAsyncBlock e recuperar os dados no retorno de chamada de conclusão com XUserAddResult.

Este tópico fornece um exemplo de como executar uma tarefa de API do Microsoft Game Development Kit (GDK). As funções assíncronas de API do Microsoft Game Development Kit (GDK) implementam internamente o retorno de chamada de trabalho. No entanto, ele ainda é executado conforme determinado pela fila de tarefas especificada no
bloco assíncrono. A execução desses métodos requer o bloco assíncrono e
quaisquer parâmetros necessários para a API.

```c++ theme={null}
// Set up the async block and completion callback.
XAsyncBlock* async = new XAsyncBlock{};
async->queue = taskQueue;
async->context = nullptr;
async->callback = [](XAsyncBlock* async)
{
    XUserHandle newUser = nullptr;
    HRESULT result = XUserAddResult(async, &newUser);
    // Handle the completion callback.
    delete async;
};

// Start the async call.
HRESULT hr = XUserAddAsync(XUserAddOptions::None, async);
if (FAILED(hr))
{
    delete async;
}
```

Esse código não difere muito do código para [executar tarefas genéricas](https://docs.xbox.com/pt-BR/build/core-features/common/async/async-libraries/async-library-xasync-example-run-simple-task.md).
Em vez de usar [XAsyncRun](https://docs.xbox.com/pt-BR/reference/system/xasync/functions/xasyncrun.md) com um retorno de chamada de trabalho, você chama
a API que deseja usar. O bloco assíncrono é configurado
da mesma forma. A diferença é que [XUserAddAsync](https://docs.xbox.com/pt-BR/reference/system/xuser/functions/xuseraddasync.md)
tem dados a serem recuperados da chamada, o que é feito no
retorno de chamada de conclusão com [XUserAddResult](https://docs.xbox.com/pt-BR/reference/system/xuser/functions/xuseraddresult.md).

## Documentação de referência da API

* [XAsync (conteúdo da API)](https://docs.xbox.com/pt-BR/reference/system/xasync/xasync_members.md)
  * Funções
    * [XAsyncRun](https://docs.xbox.com/pt-BR/reference/system/xasync/functions/xasyncrun.md)
* [xuser (conteúdo da API)](https://docs.xbox.com/pt-BR/reference/system/xuser/xuser_members.md)
  * Funções
    * [XUserAddAsync](https://docs.xbox.com/pt-BR/reference/system/xuser/functions/xuseraddasync.md)
    * [XUserAddResult](https://docs.xbox.com/pt-BR/reference/system/xuser/functions/xuseraddresult.md)

## Confira também

[Visão geral da biblioteca XAsync](https://docs.xbox.com/pt-BR/build/core-features/common/async/async-libraries/async-library-xasync.md)

[Configurar tarefa assíncrona (exemplo)](https://docs.xbox.com/pt-BR/build/core-features/common/async/async-libraries/async-library-xasync-example-setup-async-task.md)

[Executar tarefa simples (exemplo)](https://docs.xbox.com/pt-BR/build/core-features/common/async/async-libraries/async-library-xasync-example-run-simple-task.md)

[XAsync](https://docs.xbox.com/pt-BR/reference/system/xasync/xasync_members.md)


## Related topics

- [Exemplo de configuração de tarefa assíncrona](https://docs.xbox.com/pt-BR/build/core-features/common/async/async-libraries/async-library-xasync-example-setup-async-task.md)
- [Exemplo de execução de tarefa simples](https://docs.xbox.com/pt-BR/build/core-features/common/async/async-libraries/async-library-xasync-example-run-simple-task.md)
- [XAsyncRun](https://docs.xbox.com/pt-BR/reference/system/xasync/functions/xasyncrun.md)
- [XUserAddResult](https://docs.xbox.com/pt-BR/reference/system/xuser/functions/xuseraddresult.md)
- [XUserAddAsync](https://docs.xbox.com/pt-BR/reference/system/xuser/functions/xuseraddasync.md)
