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

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

## Syntaxe

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

### 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\*](/fr/reference/system/xasync/functions/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](/fr/build/core-features/common/async/async-task-queue-design).

<Note>Après avoir lancé un appel asynchrone, ne modifiez aucun des paramètres du `XAsyncBlock` de cet appel asynchrone.</Note>

### 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](/fr/reference/system/xasync/functions/xasyncgetstatus), puis utiliser [XAsyncGetResult](/fr/reference/system/xasyncprovider/functions/xasyncgetresult) et [XAsyncGetResultSize](/fr/reference/system/xasync/functions/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](/fr/reference/system/xasync/functions/xasynccompletionroutine).

### Implémentation de XAsyncBlock

Vous pouvez utiliser [XAsyncProvider](/fr/reference/system/xasyncprovider/xasyncprovider_members) pour implémenter vos propres fonctionnalités asynchrones à l'aide de `XAsyncBlock`, puis appeler ces fonctionnalités à l'aide des fonctions [XTaskQueue](/fr/reference/system/xtaskqueue/xtaskqueue_members). Vous pouvez également effectuer des appels asynchrones en appelant [XAsyncRun](/fr/reference/system/xasync/functions/xasyncrun), une fonction d'assistance qui utilise en interne `XAsyncProvider` pour exécuter et suivre la fonction de rappel spécifiée par [XAsyncWork](/fr/reference/system/xasync/functions/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](/fr/build/core-features/common/async/async-programming-model).

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

* [Configurer une tâche asynchrone](/fr/build/core-features/common/async/async-libraries/async-library-xasync-example-setup-async-task)
* [Vue d'ensemble de la bibliothèque XAsync](/fr/build/core-features/common/async/async-libraries/async-library-xasync)
* [Vue d'ensemble de la bibliothèque XAsyncProvider](/fr/build/core-features/common/async/async-libraries/async-library-xasyncprovider)
* [Vue d'ensemble de la bibliothèque XTaskQueue](/fr/build/core-features/common/async/async-libraries/async-library-xtaskqueue)
* [Modèle de programmation asynchrone](/fr/build/core-features/common/async/async-programming-model)
* [Objectifs de conception et améliorations de la programmation asynchrone](/fr/build/core-features/common/async/async-whitepaper)
* [Envoi d'invitations](/fr/services/xbox-services/multiplayer/invites/how-to/live-invites-send)

## Voir aussi

[Membres XAsync](/fr/reference/system/xasync/xasync_members)\
[Membres XAsyncProvider](/fr/reference/system/xasyncprovider/xasyncprovider_members)\
[Modèle de programmation asynchrone](/fr/build/core-features/common/async/async-programming-model)


## Related topics

- [XAsyncBlock](/reference/system/xasync/structs/xasyncblock.md)
- [Making Async Calls](/services/playfab/sdks/c/async.md)
- [PFGroupsBlockEntityAsync](/services/playfab/api-references/c/pfgroups/functions/pfgroupsblockentityasync.md)
