OnlyOnRanToCompletion 和 NotOnFaulted 之间的区别?

发布于 2024-12-07 11:07:59 字数 313 浏览 0 评论 0原文

这两个值来自 TaskContinuationOptions 枚举。我有点不确定该使用哪一个。

另一对我感到困惑的是 NotOnRanToCompletionOnlyOnFaulted

这个措辞对我来说有点令人困惑,每对中的每个值似乎都具有相同的功能。我在这里错过了什么吗?

These two values are from the TaskContinuationOptions enumeration. I'm a bit unsure of which one to use.

Another pair I'm confused between is NotOnRanToCompletion and OnlyOnFaulted.

The wording is a bit confusing to me and each value from each pair seem to function equally. Am I missing something here?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

溺孤伤于心 2024-12-14 11:07:59

是的:如果某件事被取消,它既不是错误的,也不是运行完成的;因此它NotOnRanToCompletion处理,而不是由OnlyOnFaulted处理。

所以:

NotOnRanToCompletion | NotOnFaulted == OnlyOnCancelled
NotOnCanceled        | NotOnFaulted == OnlyOnRanToCompletion
NotOnRanToCompletion | NotOnCanceld == OnlyOnFaulted

Yes: if something is canceled, it's neither faulted nor ran-to-completion; so it would be processed by NotOnRanToCompletion but not by OnlyOnFaulted.

So:

NotOnRanToCompletion | NotOnFaulted == OnlyOnCancelled
NotOnCanceled        | NotOnFaulted == OnlyOnRanToCompletion
NotOnRanToCompletion | NotOnCanceld == OnlyOnFaulted
梅窗月明清似水 2024-12-14 11:07:59

OnlyOnFaulted 表示如果前面的任务引发任务本身未处理的异常,则延续将运行,除非任务被取消。

NotOnRanToCompletion 表示如果任务运行完成,延续将不会运行,也就是说,如果任务抛出异常,它将运行或者如果它被取消了。

总而言之,如果您希望在任务取消或引发异常时继续运行,请使用 NotOnRanToCompletion。如果您希望它仅在抛出异常时运行,但在取消时不运行,请使用 OnlyOnFaulted

OnlyOnFaulted means that the continuation will run if the antecedent task throws an exception that is not handled by the task itself, unless the task was canceled.

NotOnRanToCompletion means that the continuation will not run if the task ran to completion, that is to say it will run if the task threw an exception, or if it was canceled.

So to summarize, if you want your continuation to run if the task is canceled or threw an exception, use NotOnRanToCompletion. If you want it to run only if it threw an exception but not if it is canceled, use OnlyOnFaulted.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文