.net Core Cancellationtoken Example

4 min read Jun 03, 2024
.net Core Cancellationtoken Example

Utilisation de CancellationToken dans .NET Core : Un exemple pratique

Le token d'annulation (CancellationToken) est un outil puissant dans .NET Core pour gérer les opérations asynchrones et arrêter le travail en cours de manière contrôlée. Il permet de répondre à des interruptions utilisateur, des changements de conditions ou des délais d'expiration. Dans cet article, nous allons explorer un exemple concret d'utilisation de CancellationToken dans une application .NET Core.

Scénario : Téléchargement de données

Imaginez une application qui télécharge des données d'un serveur distant. Ce processus peut prendre du temps, et l'utilisateur peut souhaiter l'arrêter à tout moment. C'est là que le CancellationToken intervient.

using System.Threading;
using System.Threading.Tasks;

public class DataDownloader
{
    public async Task DownloadDataAsync(CancellationToken cancellationToken)
    {
        // Simuler le téléchargement des données
        await Task.Delay(5000, cancellationToken); 

        // Vérifier si l'opération a été annulée
        if (cancellationToken.IsCancellationRequested)
        {
            throw new OperationCanceledException("Téléchargement annulé");
        }

        // Renvoyer les données téléchargées (ici, un simple texte)
        return "Données téléchargées !";
    }
}

Explication du code

  1. Définition d'un CancellationToken : Dans le code ci-dessus, la méthode DownloadDataAsync prend un CancellationToken en argument.
  2. Annulation avec Task.Delay : La méthode Task.Delay est utilisée pour simuler le téléchargement des données. Le CancellationToken est passé à Task.Delay pour permettre l'annulation de l'opération en cours.
  3. Vérification de l'annulation : La méthode IsCancellationRequested vérifie si le token a été annulé. Si c'est le cas, une exception OperationCanceledException est levée.
  4. Retour des données : Si l'opération n'a pas été annulée, les données téléchargées sont renvoyées.

Utilisation du CancellationToken

Voici comment utiliser le code ci-dessus pour annuler le téléchargement :

// Création d'un CancellationTokenSource
using var cts = new CancellationTokenSource();

// Démarrage de l'opération de téléchargement
var downloader = new DataDownloader();
var task = downloader.DownloadDataAsync(cts.Token);

// Annulation du téléchargement après 2 secondes
await Task.Delay(2000); 
cts.Cancel();

// Gestion de l'exception d'annulation
try
{
    var data = await task;
    Console.WriteLine(data);
}
catch (OperationCanceledException ex)
{
    Console.WriteLine($"Téléchargement annulé : {ex.Message}");
}

Conclusion

Le CancellationToken est un outil essentiel pour la gestion des opérations asynchrones dans .NET Core. Il permet de garantir une interruption propre et contrôlée, ce qui est crucial pour des applications réactives et robustes. N'hésitez pas à l'utiliser dans vos projets pour gérer les opérations longue durée et offrir une meilleure expérience utilisateur.

Featured Posts