OperationCanceledException

OperationCanceledException

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

最佳答案

OperationCanceledException 只是 TaskCanceledException 的基类-因此,如果您捕获了 OperationCanceledException ,您仍然会捕获后者。

并发集合上的某些操作仅抛出BlockingCollection.TryTake,因为它不涉及任何实际任务(至少就公共(public)API而言)。有关示例,请参见ojit_a。

我会捕获OperationCanceledException,以防万一由于操作本身抛出了OperationCanceledException而取消了任务-您可能仍希望将其视为“只是取消”。

09-17 19:14