OperationCanceledException和TaskCanceledException之间的区别?

时间:2012-10-23 22:39:54

标签: c# exception asynchronous task

OperationCanceledExceptionTaskCanceledException之间有什么区别?如果我使用的是.NET 4.5并使用async / await关键字,那么我应该关注哪一个?

1 个答案:

答案 0 :(得分:107)

OperationCanceledException只是TaskCanceledException的基类 - 所以如果你抓住前者,你仍会抓住后者。

对并发集合的一些操作只抛出OperationCanceledException,因为没有涉及任何实际的任务(至少就公共API而言)。有关示例,请参阅BlockingCollection.TryTake

我会抓住OperationCanceledException以防万一由于操作本身刚刚抛出OperationCanceledException而导致任务被取消 - 您可能仍然希望将其视为“只是取消”。