98 votes

Différence entre OperationCanceledException et TaskCanceledException ?

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 ?

114voto

Jon Skeet Points 692016

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".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X