.net Task Cancellation

5 min read Jun 04, 2024
.net Task Cancellation

Annulation de tâches dans .NET : un guide complet

L'annulation de tâches est une fonctionnalité essentielle dans les applications .NET, permettant de gérer efficacement les opérations asynchrones et de répondre aux changements de conditions d'exécution. Ce guide vous permettra de comprendre les mécanismes d'annulation de tâches et de les mettre en pratique dans vos applications .NET.

Comprendre l'annulation de tâches

L'annulation de tâches dans .NET s'effectue grâce à l'utilisation de jetons d'annulation (CancellationToken). Ces jetons agissent comme des signaux permettant aux tâches en cours d'être informées de la nécessité de s'arrêter.

Création et utilisation des jetons d'annulation

Vous pouvez créer un jeton d'annulation en utilisant la classe CancellationTokenSource. La méthode Token de cette source renvoie un jeton d'annulation qui peut être passé à la tâche que vous souhaitez annuler.

CancellationTokenSource source = new CancellationTokenSource();
CancellationToken token = source.Token;

// Utilisez le jeton d'annulation dans la tâche
Task.Run(() => 
{
  // Vérifier l'état du jeton d'annulation
  if (token.IsCancellationRequested)
  {
    // Annuler la tâche
    return;
  }
  // Code de la tâche
}, token);

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

Vérification de l'état du jeton d'annulation

Vous pouvez vérifier l'état du jeton d'annulation à l'aide de la propriété IsCancellationRequested. Si cette propriété est true, cela signifie que l'annulation a été demandée.

Gérer les exceptions d'annulation

Lorsque vous annulez une tâche, une OperationCanceledException est levée. Vous pouvez gérer cette exception dans un bloc try-catch pour effectuer un nettoyage ou une action appropriée.

try
{
  // Code de la tâche
}
catch (OperationCanceledException ex)
{
  // Gérer l'exception d'annulation
}

Utiliser les jetons d'annulation avec les méthodes asynchrones

Vous pouvez également passer des jetons d'annulation aux méthodes asynchrones pour permettre l'annulation pendant l'exécution. De nombreux types de méthodes asynchrones, telles que HttpClient.GetAsync, acceptent des jetons d'annulation en tant que paramètre.

Avantages de l'annulation de tâches

L'annulation de tâches offre de nombreux avantages, notamment:

  • Amélioration de la réactivité des applications: L'annulation de tâches permet de libérer les ressources et d'empêcher les applications de rester bloquées.
  • Gestion efficace des ressources: L'annulation de tâches permet d'éviter les fuites de ressources en libérant les ressources utilisées par les tâches annulées.
  • Meilleure gestion des erreurs: L'annulation de tâches permet de gérer les erreurs d'annulation de manière élégante et cohérente.

Conclusion

L'annulation de tâches est une fonctionnalité puissante qui vous permet de gérer efficacement les opérations asynchrones dans vos applications .NET. En comprenant les mécanismes d'annulation et en les mettant en pratique, vous pouvez améliorer la réactivité, la gestion des ressources et la fiabilité de vos applications. N'oubliez pas d'utiliser des jetons d'annulation et de gérer les exceptions d'annulation pour une gestion efficace des tâches asynchrones.