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

# XAsyncBegin

> XAsyncBegin

# XAsyncBegin

Initialise un [XAsyncBlock](/fr-CA/reference/system/xasync/structs/xasyncblock) et commence le travail asynchrone d'un fournisseur asynchrone.

## Syntaxe

```cpp theme={null}
HRESULT XAsyncBegin(  
         XAsyncBlock* asyncBlock,  
         void* context,  
         const void* identity,  
         const char* identityName,  
         XAsyncProvider* provider  
)  
```

### Paramètres

*asyncBlock*   \_Inout\_\
Type : [XAsyncBlock\*](/fr-CA/reference/system/xasync/structs/xasyncblock)

Pointeur vers le [XAsyncBlock](/fr-CA/reference/system/xasync/structs/xasyncblock) qui contient les données de l'appel asynchrone.

*context*   \_In\_opt\_\
Type : void\*

Facultatif. Pointeur de contexte à stocker dans l'objet [XAsyncProviderData](/fr-CA/reference/system/xasyncprovider/structs/xasyncproviderdata) passé à la fonction de rappel [XAsyncProvider](/fr-CA/reference/system/xasyncprovider/functions/xasyncprovider).

*identity*   \_In\_opt\_\
Type : void\*

Facultatif. Pointeur vers un jeton arbitraire qui peut servir à identifier l'appel asynchrone.

*identityName*   \_In\_opt\_\
Type : char\*

Facultatif. Chaîne qui nomme la fonction fournissant l'appel asynchrone. La valeur de ce paramètre est généralement définie sur la macro de compilateur `__FUNCTION__`.

*provider*   \_In\_\
Type : [XAsyncProvider](/fr-CA/reference/system/xasyncprovider/functions/xasyncprovider)\*

Pointeur vers la fonction de rappel [XAsyncProvider](/fr-CA/reference/system/xasyncprovider/functions/xasyncprovider) à appeler pour l'appel asynchrone.

### Valeur de retour

Type : [HRESULT](https://learn.microsoft.com/openspecs/windows_protocols/ms-erref/0642cb2f-2075-4469-918c-4441e69c548a)

Retourne `S_OK` en cas de réussite; sinon, retourne un code d'erreur. Pour obtenir la liste des codes d'erreur, consultez [Codes d'erreur](/fr-CA/reference/errorcodes).

## Remarques

`XAsyncBegin` est appelé pour indiquer que le fournisseur asynchrone doit commencer le travail asynchrone. Après l'appel de `XAsyncBegin`, les autres fonctions [XAsyncProvider](/fr-CA/reference/system/xasyncprovider/xasyncprovider_members), comme [XAsyncGetResult](/fr-CA/reference/system/xasyncprovider/functions/xasyncgetresult), fourniront des données pertinentes.

Lorsque `XAsyncBegin` est appelé, la fonction de rappel spécifiée dans *provider* est appelée, en spécifiant [XAsyncOp::Begin](/fr-CA/reference/system/xasyncprovider/enums/xasyncop) dans le paramètre *op* de [XAsyncProvider](/fr-CA/reference/system/xasyncprovider/functions/xasyncprovider). Si la fonction de rappel implémente ce code d'opération, elle doit démarrer son travail asynchrone soit en appelant [XAsyncSchedule](/fr-CA/reference/system/xasyncprovider/functions/xasyncschedule), soit par des moyens externes. Une fois que `XAsyncBegin` a retourné, on suppose que la fonction de rappel a démarré le travail asynchrone sur un thread défini par le système.

<Note>La fonction de rappel spécifiée dans *provider* est traitée de manière synchrone dans la chaîne d'appels de `XAsyncBegin`. Le travail asynchrone effectué par la fonction de rappel ne doit pas bloquer le thread.</Note>

Vous pouvez utiliser les paramètres *identity* et *identityName* pour identifier et gérer les appels `XAsyncOp::Begin` et `XAsyncOp::GetResult` non concordants à la fonction de rappel. En général, la valeur de *identity* est définie sur le pointeur de la fonction qui a appelé `XAsyncBegin`, et la valeur de *identityName* est définie sur la macro de compilateur `__FUNCTION__`.

## Configuration requise

**En-tête :** XAsyncProvider.h

**Bibliothèque :** xgameruntime.lib

**Plateformes prises en charge :** Windows, consoles de la famille XBOX One et consoles XBOX Series

## Documentation conceptuelle

* [Configurer un fournisseur personnalisé](/fr-CA/build/core-features/common/async/async-libraries/async-library-xasyncprovider-example-setup-custom-provider)
* [Vue d'ensemble de la bibliothèque XAsyncProvider](/fr-CA/build/core-features/common/async/async-libraries/async-library-xasyncprovider)
* [Modèle de programmation asynchrone](/fr-CA/build/core-features/common/async/async-programming-model)

## Voir aussi

[Membres XAsyncProvider](/fr-CA/reference/system/xasyncprovider/xasyncprovider_members)\
[XAsyncProviderData](/fr-CA/reference/system/xasyncprovider/structs/xasyncproviderdata)\
[XAsyncProvider](/fr-CA/reference/system/xasyncprovider/functions/xasyncprovider)\
[XAsyncGetResult](/fr-CA/reference/system/xasyncprovider/functions/xasyncgetresult)\
[Modèle de programmation asynchrone](/fr-CA/build/core-features/common/async/async-programming-model)


## Related topics

- [XAsyncBegin](/reference/system/xasyncprovider/functions/xasyncbegin.md)
- [XAsyncComplete](/reference/system/xasyncprovider/functions/xasynccomplete.md)
- [XAsyncSchedule](/reference/system/xasyncprovider/functions/xasyncschedule.md)
- [XAsyncGetResult](/reference/system/xasyncprovider/functions/xasyncgetresult.md)
- [AsyncProviderData](/reference/system/xasyncprovider/structs/xasyncproviderdata.md)
