OperationCanceledException和TaskCanceledException之间的区别?
OperationCanceledException
和TaskCanceledException
什么区别? 如果我正在使用.NET 4.5并使用async
/ await
关键字,我应该找哪一个?
OperationCanceledException
仅仅是TaskCanceledException
的基类 – 所以如果你抓住前者,你仍然会抓住后者。
并发集合上的某些操作只会抛出OperationCanceledException
,因为没有任何涉及的实际任务 (至less就公共API而言)。 有关示例,请参阅BlockingCollection.TryTake
。
我会赶上OperationCanceledException
,以防万一任务被取消,由于本身只是抛出OperationCanceledException
– 你可能仍然想把它当作“只是取消”。