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?
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答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".