Skip to main content

XAsyncBlock

Representa o tempo de vida de uma chamada assíncrona.

Sintaxe

Membros

queue
Tipo: XTaskQueueHandle
Opcional. O identificador da fila de tarefas para a chamada assíncrona e, opcionalmente, para o retorno de chamada de conclusão especificado em callback. Se definido como nulo, a chamada assíncrona tentará usar a fila de tarefas do processo. Se a fila de tarefas do processo também estiver definida como nula, a chamada assíncrona falhará e retornará E_NO_TASK_QUEUE. context
Tipo: void*
Opcional. Um ponteiro para informações passadas ao retorno de chamada de conclusão. callback
Tipo: XAsyncCompletionRoutine*
Retorno de chamada opcional que será invocado quando a chamada for concluída. internal
Tipo: unsigned char[sizeof(void*) * 4]
Reservado para uso interno.

Comentários

A estrutura XAsyncBlock representa o tempo de vida de uma chamada assíncrona. Você usa XAsyncBlock primeiro para invocar uma chamada assíncrona e fornecer um retorno de chamada de conclusão opcional para essa chamada. Depois disso, você pode usar o XAsyncBlock como um identificador para a invocação dessa chamada específica. Quando você invoca uma chamada assíncrona, ela é enviada a uma fila de tarefas para execução. Uma fila de tarefas permite determinar qual thread executa a chamada assíncrona e qual thread invoca o retorno de chamada de conclusão, se houver um especificado. Não é necessário criar uma fila de tarefas para fazer chamadas assíncronas. Se uma fila de tarefas não for especificada em queue, a fila de tarefas do processo será usada por padrão. Normalmente, a fila de tarefas do processo despacha chamadas assíncronas para o pool de threads do sistema, e os retornos de chamada de conclusão são invocados no thread que iniciou a chamada assíncrona quando esse thread está em estado de alerta. Para obter mais informações sobre os modos de despacho das filas de tarefas, consulte Design da fila de tarefas assíncronas.
Depois de invocar uma chamada assíncrona, não modifique nenhum dos parâmetros no XAsyncBlock dessa chamada assíncrona.

Retornos de chamada de conclusão

Opcionalmente, você pode especificar um ponteiro para uma função de retorno de chamada em callback para fornecer um retorno de chamada de conclusão para uma chamada assíncrona. Um retorno de chamada de conclusão é uma função de retorno de chamada executada após a conclusão de uma chamada assíncrona. Você pode fornecer dados específicos do contexto ao retorno de chamada de conclusão especificando em context um ponteiro que represente as informações para o retorno de chamada de conclusão. Se você não especificar um retorno de chamada de conclusão em callback, poderá verificar periodicamente se a chamada assíncrona foi concluída usando a função XAsyncGetStatus e, em seguida, usar XAsyncGetResult e XAsyncGetResultSize conforme necessário para obter os resultados da tarefa concluída. Para obter mais informações sobre retornos de chamada de conclusão, consulte XAsyncCompletionRoutine.

Implementando XAsyncBlock

Você pode usar XAsyncProvider para implementar sua própria funcionalidade assíncrona usando XAsyncBlock e, em seguida, invocar essa funcionalidade usando funções de XTaskQueue. Você também pode fazer chamadas assíncronas invocando XAsyncRun, uma função auxiliar que usa internamente XAsyncProvider para executar e acompanhar a função de retorno de chamada especificada por XAsyncWork, outra função auxiliar. Para obter mais informações sobre como implementar sua própria funcionalidade assíncrona usando XAsyncProvider e XAsyncBlock, consulte Modelo de programação assíncrona. Um XAsyncBlock deve permanecer na memória durante todo o tempo de vida de uma chamada assíncrona. No entanto, se o XAsyncBlock for alocado dinamicamente, ele poderá ser excluído com segurança dentro do retorno de chamada de conclusão de uma chamada assíncrona.

Requisitos

Cabeçalho: XAsync.h Plataformas com suporte: Windows, consoles da família XBOX One e consoles XBOX Series

Documentação conceitual

Confira também

Membros de XAsync
Membros de XAsyncProvider
Modelo de programação assíncrona
Last modified on October 6, 2026