OnlyOnRanToCompletion和NotOnFaulted之间的区别?

时间:2011-10-01 20:54:11

标签: c# android android-asynctask task

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

另一对我感到困惑的是NotOnRanToCompletionOnlyOnFaulted

措辞对我来说有点混乱,每对中的每个值似乎都是平等的。我在这里错过了什么吗?

2 个答案:

答案 0 :(得分:21)

是的:如果某些内容被取消,它既不会出现故障也不会被完成;因此NotOnRanToCompletion处理,而不是由OnlyOnFaulted处理。

所以:

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

答案 1 :(得分:4)

OnlyOnFaulted表示如果先行任务抛出一个未由任务本身处理的异常,除非任务被取消,继续将运行。

NotOnRanToCompletion表示如果任务运行完成,继续将运行,也就是说,如果任务引发异常, 运行如果被取消。

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