Utilisation de CancellationToken dans .NET
Le CancellationToken est un outil puissant dans .NET qui permet de gérer l'annulation asynchrone des tâches. Il permet de signaler aux tâches en cours qu'elles doivent s'arrêter et libérer les ressources associées. Cette fonctionnalité est particulièrement utile pour les opérations longues ou susceptibles d'être interrompues, comme les requêtes réseau, les traitements de fichiers volumineux ou les boucles infinies.
Créer un CancellationTokenSource
Pour utiliser un CancellationToken, vous devez d'abord créer un CancellationTokenSource. Ce dernier est responsable de la création du token et de la gestion de son état.
using System.Threading;
CancellationTokenSource source = new CancellationTokenSource();
CancellationToken token = source.Token;
Utiliser le CancellationToken dans les méthodes asynchrones
Vous pouvez passer le CancellationToken aux méthodes asynchrones qui doivent être annulées. L'utilisation du CancellationToken se fait généralement par l'intermédiaire de la propriété CancellationToken
de la méthode Task
ou Task<T>
.
async Task GetLongRunningData(CancellationToken cancellationToken)
{
cancellationToken.ThrowIfCancellationRequested(); // Vérifier l'état du token
// Code pour effectuer l'opération longue
return "Données récupérées";
}
Signaler l'annulation
Pour signaler l'annulation, utilisez la méthode Cancel
du CancellationTokenSource. Cette méthode modifie l'état du CancellationToken et déclenche l'exception OperationCanceledException
dans les tâches qui le surveillent.
source.Cancel(); // Signaler l'annulation
Gestion des exceptions d'annulation
Les tâches qui surveillent le CancellationToken lèveront une exception OperationCanceledException
si elles détectent une demande d'annulation. Vous pouvez gérer cette exception dans le bloc catch
pour nettoyer les ressources et effectuer des actions de récupération.
try
{
await GetLongRunningData(token);
}
catch (OperationCanceledException ex)
{
Console.WriteLine("La tâche a été annulée : " + ex.Message);
}
Avantages d'utiliser le CancellationToken
L'utilisation de CancellationToken présente plusieurs avantages:
- Gestion efficace de l'annulation: Il permet d'arrêter proprement les opérations longues et de libérer les ressources associées.
- Code plus propre et plus lisible: Il simplifie la gestion de l'annulation et rend le code plus facile à comprendre et à maintenir.
- Fiabilité accrue: Il garantit une meilleure fiabilité en permettant aux tâches d'être annulées de manière contrôlée.
Conclusion
Le CancellationToken est un outil essentiel pour la gestion de l'annulation asynchrone dans .NET. En l'intégrant dans votre code, vous pouvez garantir une meilleure gestion des ressources, une fiabilité accrue et un code plus propre et plus lisible. N'hésitez pas à l'utiliser pour toutes vos opérations longues ou susceptibles d'être interrompues.