XAsyncBlock
Representa la duración de una llamada asincrónica.Sintaxis
Miembros
queueTipo: 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.
contextTipo: void* Opcional. Un puntero a la información que se pasa a la devolución de llamada de finalización. callback
Tipo: 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 estructuraXAsyncBlock 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.
Después de invocar una llamada asincrónica, no modifique ninguno de los parámetros del
XAsyncBlock de esa llamada asincrónica.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 y, a continuación, usar XAsyncGetResult y 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.Implementación de XAsyncBlock
Puede usar XAsyncProvider para implementar su propia funcionalidad asincrónica medianteXAsyncBlock y, a continuación, invocar esa funcionalidad mediante las funciones de XTaskQueue. También puede invocar llamadas asincrónicas mediante XAsyncRun, una función auxiliar que usa internamente XAsyncProvider para ejecutar la función de devolución de llamada especificada por 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.
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 SeriesDocumentación conceptual
- Configurar una tarea asincrónica
- Información general de la biblioteca XAsync
- Información general de la biblioteca XAsyncProvider
- Información general de la biblioteca XTaskQueue
- Modelo de programación asincrónica
- Objetivos de diseño y mejoras de la programación asincrónica
- Envío de invitaciones
Consulte también
Miembros de XAsyncMiembros de XAsyncProvider
Modelo de programación asincrónica
