OperationCanceledException
和TaskCanceledException
有什么区别?如果我使用.NET 4.5并使用async
/await
关键字,我应该寻找哪一个?
最佳答案
OperationCanceledException
只是 TaskCanceledException
的基类-因此,如果您捕获了 OperationCanceledException
,您仍然会捕获后者。
并发集合上的某些操作仅抛出BlockingCollection.TryTake
,因为它不涉及任何实际任务(至少就公共(public)API而言)。有关示例,请参见ojit_a。
我会捕获OperationCanceledException
,以防万一由于操作本身抛出了OperationCanceledException
而取消了任务-您可能仍希望将其视为“只是取消”。