OperationCanceledException和TaskCanceledException之间的区别?

OperationCanceledExceptionTaskCanceledException什么区别? 如果我正在使用.NET 4.5并使用async / await关键字,我应该找哪一个?

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

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

我会赶上OperationCanceledException ,以防万一任务被取消,由于本身只是抛出OperationCanceledException – 你可能仍然想把它当作“只是取消”。