Frage Unterschied zwischen OperationCanceledException und TaskCanceledException?


Was ist der Unterschied zwischen OperationCanceledException und TaskCanceledException? Wenn ich .NET 4.5 verwende und den async/await Schlüsselwörter, auf welche sollte ich achten?


76
2017-10-23 22:39


Ursprung


Antworten:


OperationCanceledException ist einfach die Basisklasse für TaskCanceledException - Wenn Sie die erstere fangen, werden Sie immer noch die letztere fangen.

Einige Vorgänge bei gleichzeitigen Sammlungen werden nur ausgelöst OperationCanceledException, da es keine tatsächlichen gibt Aufgaben beteiligt (zumindest was die öffentliche API betrifft). Sehen BlockingCollection.TryTake zum Beispiel.

Ich würde das fangen OperationCanceledException nur für den Fall, dass die Aufgabe aufgrund einer Operation abgebrochen wird, die selbst nur geworfen hat OperationCanceledException - das wollen Sie wahrscheinlich immer noch als "gerechte Kündigung" behandeln.


87
2017-10-23 22:46