106

OperationCanceledException和 和有什么不一样TaskCanceledException?如果我使用 .NET 4.5 并使用async/await关键字,我应该寻找哪一个?

4

1 回答 1

123

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

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

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

于 2012-10-23T22:46:49.827 回答