Sommaire

Annuler des tâches en C#

1. Présentation du contexte

Il arrive souvent que les traitements lancés dans un thread donné - éventuellement asynchrones, soient longs ou du moins sans retour quant à la durée d’exécution et à son niveau d’avancement. La question de l’annulation d’une procédure très longue se pose alors.

La plate-forme .NET propose la structure CancellationToken stockée dans l’espace de noms System.Threading, qui permet justement de gérer l’annulation de tâches.

Voici sa définition :

[ComVisible(false)]  
[DebuggerDisplay("IsCancellationRequested = {IsCancellationRequested}")]  
public struct CancellationToken  
{  
  public CancellationToken(bool canceled);  
  
  public static CancellationToken None { get; }  
  public bool IsCancellationRequested { get; }  
  public bool CanBeCanceled { get; }  
  public WaitHandle WaitHandle { get; }  
  
  public bool Equals(CancellationToken other);  
  public override bool Equals(object other);  
  public override int GetHashCode();  
  public CancellationTokenRegistration Register(Action callback);  
  public CancellationTokenRegistration Register(Action callback, 
bool useSynchronizationContext);  
  public CancellationTokenRegistration Register(Action<object>  
callback, object state);  
  public CancellationTokenRegistration Register(Action<object> ...