.net Task Cancellationtoken

4 min read Jun 04, 2024
.net Task Cancellationtoken

Annulation de tâches avec CancellationToken dans .NET

Introduction

Dans le développement d'applications .NET, il est fréquent de devoir gérer des tâches longues ou asynchrones. Parfois, il est nécessaire d'annuler ces tâches avant leur fin, par exemple si l'utilisateur interrompt une opération ou si une autre condition survient. Le mécanisme de CancellationToken dans .NET fournit un moyen simple et efficace pour annuler des tâches de manière contrôlée.

Qu'est-ce qu'un CancellationToken ?

Un CancellationToken est un objet qui permet de signaler à une tâche qu'elle doit être annulée. Il s'agit d'un signal simple et léger qui peut être utilisé pour informer une tâche qu'elle doit s'arrêter.

Utilisation de CancellationToken

Pour utiliser un CancellationToken, vous devez le passer à la tâche que vous souhaitez annuler. La tâche peut ensuite vérifier l'état du CancellationToken régulièrement pour voir s'il a été annulé.

Voici un exemple simple d'utilisation de CancellationToken :

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

public class Program
{
    public static async Task Main(string[] args)
    {
        // Créer un CancellationTokenSource
        var cts = new CancellationTokenSource();
        var token = cts.Token;

        // Lancer une tâche avec le CancellationToken
        Task task = Task.Run(() =>
        {
            Console.WriteLine("Démarrage de la tâche...");

            // Vérifier l'état du CancellationToken
            while (!token.IsCancellationRequested)
            {
                // Exécuter du code ici
                Console.WriteLine("Travail en cours...");
                Thread.Sleep(1000);
            }

            Console.WriteLine("Tâche annulée.");
        }, token);

        // Attendre quelques secondes
        await Task.Delay(3000);

        // Annuler la tâche
        cts.Cancel();

        // Attendre la fin de la tâche
        try
        {
            await task;
        }
        catch (OperationCanceledException)
        {
            Console.WriteLine("La tâche a été annulée.");
        }
    }
}

Dans cet exemple, la tâche est lancée avec le CancellationToken. La tâche vérifie ensuite l'état du CancellationToken à chaque itération de la boucle. Si le CancellationToken est annulé, la tâche s'arrête et une exception OperationCanceledException est levée.

Avantages de CancellationToken

L'utilisation de CancellationToken offre plusieurs avantages :

  • Gestion propre de l'annulation: L'annulation de la tâche est effectuée de manière contrôlée et ordonnée.
  • Simplicité d'utilisation: Le mécanisme de CancellationToken est simple à utiliser et à comprendre.
  • Polyvalence: CancellationToken peut être utilisé dans différentes situations, telles que l'annulation d'un thread, d'une tâche asynchrone ou d'un processus long.

Conclusion

Le mécanisme de CancellationToken est un outil puissant pour gérer l'annulation des tâches dans .NET. Il permet de contrôler l'arrêt des tâches de manière propre et efficace, tout en facilitant la gestion des interruptions et des conditions d'annulation. L'utilisation de CancellationToken est recommandée pour tous les développeurs .NET qui gèrent des tâches asynchrones ou longues.

Featured Posts