Skip to main content

XAsyncBlock

Représente la durée de vie d’un appel asynchrone.

Syntaxe

Membres

queue
Type : XTaskQueueHandle
Facultatif. Handle de la file d’attente de tâches pour l’appel asynchrone et, éventuellement, pour le rappel d’achèvement spécifié dans callback. S’il est défini sur null, l’appel asynchrone tente d’utiliser la file d’attente de tâches du processus. Si la file d’attente de tâches du processus est également définie sur null, l’appel asynchrone échoue et retourne E_NO_TASK_QUEUE. context
Type : void*
Facultatif. Pointeur vers les informations passées au rappel d’achèvement. callback
Type : XAsyncCompletionRoutine*
Rappel facultatif qui sera appelé à la fin de l’appel. internal
Type : unsigned char[sizeof(void*) * 4]
Réservé à un usage interne.

Remarques

La structure XAsyncBlock représente la durée de vie d’un appel asynchrone. Vous utilisez XAsyncBlock pour d’abord lancer un appel asynchrone et fournir un rappel d’achèvement facultatif pour cet appel. Ensuite, vous pouvez utiliser le XAsyncBlock comme handle pour cette invocation particulière. Lorsque vous lancez un appel asynchrone, il est soumis à une file d’attente de tâches pour exécution. Une file d’attente de tâches vous permet de déterminer quel thread exécute l’appel asynchrone et quel thread appelle le rappel d’achèvement, s’il est spécifié. Vous n’avez pas besoin de créer une file d’attente de tâches pour effectuer des appels asynchrones. Si aucune file d’attente de tâches n’est spécifiée dans queue, la file d’attente de tâches du processus est utilisée par défaut. En général, la file d’attente de tâches du processus distribue les appels asynchrones au pool de threads du système, et les rappels d’achèvement sont appelés sur le thread qui a lancé l’appel asynchrone lorsque ce thread est en état d’alerte. Pour plus d’informations sur les modes de distribution des files d’attente de tâches, consultez Conception de la file d’attente de tâches asynchrones.
Après avoir lancé un appel asynchrone, ne modifiez aucun des paramètres du XAsyncBlock de cet appel asynchrone.

Rappels d’achèvement

Vous pouvez éventuellement spécifier un pointeur vers une fonction de rappel dans callback afin de fournir un rappel d’achèvement pour un appel asynchrone. Un rappel d’achèvement est une fonction de rappel qui s’exécute une fois l’appel asynchrone terminé. Vous pouvez fournir des données propres au contexte au rappel d’achèvement en spécifiant dans context un pointeur qui représente les informations destinées au rappel d’achèvement. Si vous ne spécifiez pas de rappel d’achèvement dans callback, vous pouvez vérifier périodiquement si l’appel asynchrone est terminé à l’aide de la fonction XAsyncGetStatus, puis utiliser XAsyncGetResult et XAsyncGetResultSize selon les besoins pour obtenir les résultats de la tâche terminée. Pour plus d’informations sur les rappels d’achèvement, consultez XAsyncCompletionRoutine.

Implémentation de XAsyncBlock

Vous pouvez utiliser XAsyncProvider pour implémenter vos propres fonctionnalités asynchrones à l’aide de XAsyncBlock, puis appeler ces fonctionnalités à l’aide des fonctions XTaskQueue. Vous pouvez également effectuer des appels asynchrones en appelant XAsyncRun, une fonction d’assistance qui utilise en interne XAsyncProvider pour exécuter et suivre la fonction de rappel spécifiée par XAsyncWork, une autre fonction d’assistance. Pour plus d’informations sur l’implémentation de vos propres fonctionnalités asynchrones à l’aide de XAsyncProvider et XAsyncBlock, consultez Modèle de programmation asynchrone. Un XAsyncBlock doit rester en mémoire pendant toute la durée de vie d’un appel asynchrone. Toutefois, si le XAsyncBlock est alloué dynamiquement, il peut être supprimé en toute sécurité dans le rappel d’achèvement d’un appel asynchrone.

Configuration requise

En-tête : XAsync.h Plateformes prises en charge : Windows, consoles de la famille XBOX One et consoles XBOX Series

Documentation conceptuelle

Voir aussi

Membres XAsync
Membres XAsyncProvider
Modèle de programmation asynchrone
Last modified on October 6, 2026