В чем разница между OperationCanceledException
и TaskCanceledException
? Если я использую .NET 4.5 и использую ключевые слова async
/await
, на что я должен быть пойман?
Разница между OperationCanceledException и TaskCanceledException?
Ответ 1
OperationCanceledException
является просто базовым классом для TaskCanceledException
- так что если вы поймаете первое, вы все равно поймаете последнего.
Некоторые операции с параллельными коллекциями генерируют только OperationCanceledException
, так как нет никаких реальных задач (по крайней мере, в отношении публичного API). См. BlockingCollection.TryTake
для примера.
Я бы поймал OperationCanceledException
на всякий случай, если задача отменена из-за операции, которая сама просто бросила OperationCanceledException
- вы, вероятно, все еще хотите рассматривать это как "просто отмену".