Difference between OperationCanceledException and TaskCanceledException?
What is the difference between OperationCanceledException
and TaskCanceledException
? If I am using .NET 4.5 and using the async
/await
keywords, which one should I be looking to catch?
Solution 1:
OperationCanceledException
is simply the base class for TaskCanceledException
- so if you catch the former, you'll still catch the latter.
Some operations on concurrent collections throw just OperationCanceledException
, as there aren't any actual tasks involved (at least as far as the public API is concerned). See BlockingCollection.TryTake
for an example.
I would catch the OperationCanceledException
just in case the task is cancelled due to an operation which itself just threw OperationCanceledException
- you probably still want to treat that as "just cancellation".