Quelle est la différence entre OperationCanceledException
et TaskCanceledException
? Si j'utilise .NET 4.5 et que j'utilise les mots clés async
/await
, lequel devrais-je chercher à attraper?
OperationCanceledException
est simplement la classe de base pour TaskCanceledException
- donc si vous attrapez le premier, vous attraperez toujours le dernier.
Certaines opérations sur les collections simultanées lancent juste OperationCanceledException
, car il n'y a pas de tâches réelles impliquées (au moins jusqu'à l'API publique) est concerné). Voir BlockingCollection.TryTake
pour un exemple.
J'attraperais le OperationCanceledException
juste au cas où la tâche est annulée en raison d'une opération qui elle-même vient de lancer OperationCanceledException
- vous voulez probablement toujours le traiter comme "juste annulation".