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); } }}Bonnes pratiques
Section intitulée « Bonnes pratiques »- Vérifiez le jeton à des points logiques (début de boucle, après des opérations longues).
- Utilisez
ThrowIfCancellationRequestedpour une annulation simple. - N’ignorez pas les demandes d’annulation.
Exemple d’utilisation dans le monde réel
Section intitulée « Exemple d’utilisation dans le monde réel »Traitement de fichiers : Annulez la lecture d’un gros fichier lorsque l’utilisateur abandonne l’opération.
Exemple : Exemple d’annulation coopérative