Différence entre OperationCanceledException et TaskCanceledException?

Quelle est la différence entre OperationCanceledException et TaskCanceledException ? Si j’utilise .NET 4.5 et que async mots-clés async / d’ await , lequel dois-je rechercher?

OperationCanceledException est simplement la classe de base pour TaskCanceledException – donc, si vous attrapez le premier, vous attraperez toujours le dernier.

Certaines opérations sur des collections simultanées ne provoquent que OperationCanceledException , car il n’y a aucune tâche réelle impliquée (du moins en ce qui concerne l’API publique). Voir BlockingCollection.TryTake pour un exemple.

J’accepterais l’ OperationCanceledException juste au cas où la tâche serait annulée à cause d’une opération qui, elle-même, ne faisait que lancer OperationCanceledException – vous souhaitiez probablement toujours traiter cela comme “juste une annulation”.