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

# Exemple de configuration de la possibilité d'annulation

> Exemple de configuration de la possibilité d'annulation

Cette rubrique fournit un exemple de configuration de la possibilité d'annulation dans un rappel de fournisseur personnalisé. Les méthodes asynchrones de base démarrées avec [XAsyncRun](/fr/reference/system/xasync/functions/xasyncrun) ne peuvent pas être
annulées. La prise en charge de l'annulation peut être ajoutée manuellement lorsque vous utilisez un
fournisseur personnalisé. Une fois cette prise en charge ajoutée, [XAsyncCancel](/fr/reference/system/xasync/functions/xasynccancel)
déclenche le cas `Cancel`.

```c++ theme={null}
// Provider callback.
[](XAsyncOp op, const XAsyncProviderData* providerData)
{
    switch(op)
    {
        case XAsyncOp::DoWork:
        {
            bool canceled = false;
            while (true)
            {
                DWORD waitResult = WaitForSingleObject(callData->cancelEvent, 0);
                if (waitResult != WAIT_TIMEOUT)
                {
                    canceled = true;
                    break;
                }

                // Continue doing normal work. Should break if completed.
            }

            if (canceled)
            {
                XAsyncComplete(providerData->async, E_ABORT, 0);
            }
            else
            {
                XAsyncComplete(providerData->async, S_OK, 0);
            }

            break;
        }
        
        case XAsyncOp::Cancel:
            SetEvent(callData->cancelEvent);
            break;

        // Other cases.
    }
}
```

Dans ces cas de fournisseur, la prise en charge de l'annulation est ajoutée à l'aide d'un
événement Windows. Celui-ci est défini si le cas `Cancel` est appelé, et le
cas `DoWork` se termine par un appel à [XAsyncComplete](/fr/reference/system/xasyncprovider/functions/xasynccomplete) avec
l'état `E_ABORT`. N'importe quelle méthode peut être utilisée pour signaler l'annulation. Toutefois,
un événement est un moyen simple de signaler l'annulation, pris en charge sur toutes les plateformes Microsoft Game Development Kit (GDK) pouvant être ciblées.

Pour déclencher le cas `Cancel`, appelez `XAsyncCancel`
avec le bloc asynchrone de la tâche, comme suit.

```c++ theme={null}
XAsyncCancel(async);
```

## Documentation de référence de l'API

* [XAsyncProvider (contenu de l'API)](/fr/reference/system/xasyncprovider/xasyncprovider_members)
  * Fonctions
    * [XAsyncComplete](/fr/reference/system/xasyncprovider/functions/xasynccomplete)
* [xasync (contenu de l'API)](/fr/reference/system/xasync/xasync_members)
  * Fonctions
    * [XAsyncRun](/fr/reference/system/xasync/functions/xasyncrun)
    * [XAsyncCancel](/fr/reference/system/xasync/functions/xasynccancel)

## Voir aussi

[Vue d'ensemble de la bibliothèque XAsyncProvider](/fr/build/core-features/common/async/async-libraries/async-library-xasyncprovider)

[Configurer un fournisseur personnalisé (exemple)](/fr/build/core-features/common/async/async-libraries/async-library-xasyncprovider-example-setup-custom-provider)

[Configurer des méthodes d'appel (exemple)](/fr/build/core-features/common/async/async-libraries/async-library-xasyncprovider-example-setup-invocation-methods)

[Configurer des données de retour (exemple)](/fr/build/core-features/common/async/async-libraries/async-library-xasyncprovider-example-setup-return-data)

[XAsyncProvider](/fr/reference/system/xasyncprovider/xasyncprovider_members)


## Related topics

- [Mises à niveau de compte](/fr/services/playfab/pricing/account-upgrades.md)
- [Exigences XBOX testées lors de la certification pour les jeux sur console XBOX](/fr/publishing/certification/console-cert-tested-requirements.md)
- [XR-112 Établissement d'un utilisateur et d'une manette lors de l'activation initiale et de la reprise](/fr/publishing/certification/xr/xr-112.md)
- [XR-112 Établissement d'un utilisateur et d'une manette pendant l'activation initiale et la reprise](/fr-CA/publishing/certification/xr/xr-112.md)
- [XR-064 Sessions de jeu joignables et jeu en ligne](/fr-CA/publishing/certification/xr/xr-064.md)
