这两个值来自TaskContinuationOptions枚举。我有点不确定要使用哪一个。
另一对我感到困惑的是NotOnRanToCompletion
和OnlyOnFaulted
。
措辞对我来说有点混乱,每对中的每个值似乎都是平等的。我在这里错过了什么吗?
答案 0 :(得分:21)
是的:如果某些内容被取消,它既不会出现故障也不会被完成;因此将由NotOnRanToCompletion
处理,而不是由OnlyOnFaulted
处理。
所以:
NotOnRanToCompletion | NotOnFaulted == OnlyOnCancelled
NotOnCanceled | NotOnFaulted == OnlyOnRanToCompletion
NotOnRanToCompletion | NotOnCanceld == OnlyOnFaulted
答案 1 :(得分:4)
OnlyOnFaulted
表示如果先行任务抛出一个未由任务本身处理的异常,除非任务被取消,继续将运行。
NotOnRanToCompletion
表示如果任务运行完成,继续将不运行,也就是说,如果任务引发异常,将 运行或如果被取消。
总而言之,如果您希望在任务被取消或抛出异常时继续运行,请使用NotOnRanToCompletion
。如果您希望它仅在抛出异常时运行,而不是在它被取消时运行,请使用OnlyOnFaulted
。