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

# Exemplo de execução de tarefa simples

> Saiba como iniciar uma tarefa assíncrona personalizada com XAsyncRun configurando um XAsyncBlock e um retorno de chamada de trabalho e lendo o valor retornado com XAsyncGetStatus.

Este tópico fornece um exemplo de como executar uma tarefa de usuário simples. Tarefas simples podem ser iniciadas com a função [XAsyncRun](https://docs.xbox.com/pt-BR/reference/system/xasync/functions/xasyncrun.md).
Essa função recebe o bloco assíncrono como entrada e, em seguida, exige
a implementação do retorno de chamada de trabalho como uma entrada functor ou lambda. Lembre-se
de que o bloco assíncrono especifica a fila de tarefas a ser usada e o retorno de chamada
de conclusão opcional.

```c++ theme={null}
XAsyncBlock* async = new XAsyncBlock{};
async->queue = taskQueue;
async->context = contextData;
async->callback = 
    [](XAsyncBlock* async)
    {
        // The optional completion callback.
        delete async;
    }

XAsyncRun(async,
    [](XAsyncBlock* async)->HRESULT
    {
        // The work callback is implemented here.
        return S_OK;
    });
```

Este exemplo usa `XAsyncRun` para iniciar uma tarefa assíncrona simples
e personalizada. O bloco assíncrono contém a fila de tarefas a ser usada e
o retorno de chamada de conclusão.
`XAsyncRun` requer um retorno de chamada de trabalho, e
ele tem um valor de retorno. Esse valor é retornado posteriormente por uma chamada a
[XAsyncGetStatus](https://docs.xbox.com/pt-BR/reference/system/xasync/functions/xasyncgetstatus.md). Internamente, `XAsyncRun`
tem uma configuração simples de provedor assíncrono para lidar com o enfileiramento do
retorno de chamada de trabalho especificado, o enfileiramento do retorno de chamada de conclusão no
bloco assíncrono e outras alterações de estado do processo. Isso significa que nenhum
código adicional é necessário para executar tarefas assíncronas simples: basta configurar o
bloco assíncrono e chamar `XAsyncRun`.

## 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)
    * [XAsyncGetStatus](https://docs.xbox.com/pt-BR/reference/system/xasync/functions/xasyncgetstatus.md)

## Consulte 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 de API do Microsoft Game Development Kit (GDK) (exemplo)](https://docs.xbox.com/pt-BR/build/core-features/common/async/async-libraries/async-library-xasync-example-run-gdk-task.md)

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


## Related topics

- [Bibliotecas XAsync para programação de tarefas assíncronas](https://docs.xbox.com/pt-BR/build/core-features/common/async/async-libraries/index.md)
- [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 criação de fila de tarefas](https://docs.xbox.com/pt-BR/build/core-features/common/async/async-libraries/async-library-xtaskqueue-example-create-task-queue.md)
- [Exemplo de limpeza da fila de tarefas](https://docs.xbox.com/pt-BR/build/core-features/common/async/async-libraries/async-library-xtaskqueue-example-cleanup-task-queue.md)
- [Exemplo de despacho da fila de tarefas](https://docs.xbox.com/pt-BR/build/core-features/common/async/async-libraries/async-library-xtaskqueue-example-dispatch-task-queue.md)
