Quelle est la différence entre OperationCanceledException
y TaskCanceledException
? Si j'utilise .NET 4.5 et que je me sers de l'application async
/ await
mots-clés, lequel dois-je chercher à attraper ?
Réponse
Trop de publicités?OperationCanceledException
est simplement la classe de base pour TaskCanceledException
- donc si vous attrapez le premier, vous attraperez toujours le second.
Certaines opérations sur des collections concurrentes ne lancent que OperationCanceledException
car il n'y a pas de véritable tâches impliqués (du moins en ce qui concerne l'API publique). Voir BlockingCollection.TryTake
pour un exemple.
J'attraperais le OperationCanceledException
juste au cas où la tâche est annulée à cause d'une opération qui elle-même vient de lancer OperationCanceledException
- vous voudrez probablement continuer à considérer cela comme une "simple annulation".