Aller au contenu

Annulation coopérative

Contexte : L’annulation dans .NET est coopérative : le code appelé doit vérifier périodiquement le jeton et réagir. Elle n’est ni forcée ni immédiate.

using System.Threading;
using System.Threading.Tasks;
public class LongRunningTask
{
public async Task RunAsync(CancellationToken token)
{
for (int i = 0; i < 1000000; i++)
{
if (token.IsCancellationRequested)
{
// Effectuer un nettoyage
return;
}
await Task.Delay(1);
}
}
}
  • Vérifiez le jeton à des points logiques (début de boucle, après des opérations longues).
  • Utilisez ThrowIfCancellationRequested pour une annulation simple.
  • N’ignorez pas les demandes d’annulation.

Traitement de fichiers : Annulez la lecture d’un gros fichier lorsque l’utilisateur abandonne l’opération.

Exemple : Exemple d’annulation coopérative