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

# XAsyncBlock

> XAsyncBlock

# XAsyncBlock

Representa la duración de una llamada asincrónica.

## Sintaxis

```cpp theme={null}
typedef struct XAsyncBlock {  
    XTaskQueueHandle queue;  
    void* context;  
    XAsyncCompletionRoutine* callback;  
    unsigned internal[sizeof ( void* ) * 4];  
} XAsyncBlock  
```

### Miembros

*queue*\
Tipo: XTaskQueueHandle

Opcional. El identificador de la cola de tareas para la llamada asincrónica y, opcionalmente, para la devolución de llamada de finalización especificada en *callback*. Si se establece en null, la llamada asincrónica intenta usar la cola de tareas del proceso. Si la cola de tareas del proceso también está establecida en null, la llamada asincrónica genera un error y devuelve `E_NO_TASK_QUEUE`.

*context*\
Tipo: void\*

Opcional. Un puntero a la información que se pasa a la devolución de llamada de finalización.

*callback*\
Tipo: [XAsyncCompletionRoutine\*](/reference/system/xasync/functions/xasynccompletionroutine)

Devolución de llamada opcional que se invocará cuando se complete la llamada.

*internal*\
Tipo: unsigned char\[sizeof(void\*) \* 4]

Reservado para uso interno.

## Comentarios

La estructura `XAsyncBlock` representa la duración de una llamada asincrónica. Se usa `XAsyncBlock` primero para invocar una llamada asincrónica y proporcionar una devolución de llamada de finalización opcional para esa llamada. Después, puede usar el `XAsyncBlock` como identificador de la invocación de esa llamada concreta. Cuando se invoca una llamada asincrónica, esta se envía a una cola de tareas para su ejecución. Una cola de tareas permite determinar qué subproceso ejecuta la llamada asincrónica y qué subproceso invoca la devolución de llamada de finalización, si se especifica una. No es necesario crear una cola de tareas para invocar llamadas asincrónicas. Si no se especifica una cola de tareas en *queue*, se usa de forma predeterminada la cola de tareas del proceso. Normalmente, la cola de tareas del proceso envía las llamadas asincrónicas al grupo de subprocesos del sistema y las devoluciones de llamada de finalización se invocan en el subproceso que inició la llamada asincrónica cuando dicho subproceso está en estado alertable. Para obtener más información sobre los modos de distribución de las colas de tareas, consulte [Diseño de la cola de tareas asincrónicas](/build/core-features/common/async/async-task-queue-design).

<Note>Después de invocar una llamada asincrónica, no modifique ninguno de los parámetros del `XAsyncBlock` de esa llamada asincrónica.</Note>

### Devoluciones de llamada de finalización

Opcionalmente, puede especificar un puntero a una función de devolución de llamada en *callback* para proporcionar una *devolución de llamada de finalización* para una llamada asincrónica. Una devolución de llamada de finalización es una función de devolución de llamada que se ejecuta después de la finalización de una llamada asincrónica. Puede proporcionar datos específicos del contexto a la devolución de llamada de finalización especificando en *context* un puntero que represente la información para la devolución de llamada de finalización.

Si no especifica una devolución de llamada de finalización en *callback*, puede comprobar periódicamente si la llamada asincrónica se ha completado mediante la función [XAsyncGetStatus](/reference/system/xasync/functions/xasyncgetstatus) y, a continuación, usar [XAsyncGetResult](/reference/system/xasyncprovider/functions/xasyncgetresult) y [XAsyncGetResultSize](/reference/system/xasync/functions/xasyncgetresultsize) según sea necesario para obtener los resultados de la tarea completada.

Para obtener más información sobre las devoluciones de llamada de finalización, consulte [XAsyncCompletionRoutine](/reference/system/xasync/functions/xasynccompletionroutine).

### Implementación de XAsyncBlock

Puede usar [XAsyncProvider](/reference/system/xasyncprovider/xasyncprovider_members) para implementar su propia funcionalidad asincrónica mediante `XAsyncBlock` y, a continuación, invocar esa funcionalidad mediante las funciones de [XTaskQueue](/reference/system/xtaskqueue/xtaskqueue_members). También puede invocar llamadas asincrónicas mediante [XAsyncRun](/reference/system/xasync/functions/xasyncrun), una función auxiliar que usa internamente `XAsyncProvider` para ejecutar la función de devolución de llamada especificada por [XAsyncWork](/reference/system/xasync/functions/xasyncwork), otra función auxiliar, y realizar su seguimiento. Para obtener más información sobre cómo implementar su propia funcionalidad asincrónica mediante `XAsyncProvider` y `XAsyncBlock`, consulte [Modelo de programación asincrónica](/build/core-features/common/async/async-programming-model).

Un `XAsyncBlock` debe permanecer en memoria durante toda la duración de una llamada asincrónica. Sin embargo, si el `XAsyncBlock` se asigna dinámicamente, se puede eliminar de forma segura dentro de la devolución de llamada de finalización de una llamada asincrónica.

## Requisitos

**Encabezado:** XAsync.h

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

## Documentación conceptual

* [Configurar una tarea asincrónica](/build/core-features/common/async/async-libraries/async-library-xasync-example-setup-async-task)
* [Información general de la biblioteca XAsync](/build/core-features/common/async/async-libraries/async-library-xasync)
* [Información general de la biblioteca XAsyncProvider](/build/core-features/common/async/async-libraries/async-library-xasyncprovider)
* [Información general de la biblioteca XTaskQueue](/build/core-features/common/async/async-libraries/async-library-xtaskqueue)
* [Modelo de programación asincrónica](/build/core-features/common/async/async-programming-model)
* [Objetivos de diseño y mejoras de la programación asincrónica](/build/core-features/common/async/async-whitepaper)
* [Envío de invitaciones](/services/xbox-services/multiplayer/invites/how-to/live-invites-send)

## Consulte también

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


## Related topics

- [Realización de llamadas asincrónicas](/es/services/playfab/sdks/c/async.md)
- [Realización de llamadas asincrónicas en el SDK unificado de PlayFab](/es/services/playfab/sdks/unified-sdk/async-model.md)
- [PFGroupsBlockEntityAsync](/es/services/playfab/api-references/c/pfgroups/functions/pfgroupsblockentityasync.md)
- [PFGroupsListGroupBlocksAsync](/es/services/playfab/api-references/c/pfgroups/functions/pfgroupslistgroupblocksasync.md)
- [XAsyncCancel](/es/reference/system/xasync/functions/xasynccancel.md)
