初始示例
可以有两种办法,来控制后续的执行:
await
loadLinesTask- loadLinesTask 继续chain上
continuation
Continuation
Task
的Result
属性:用的时候有一个小建议,那就是确保在Task
完成的情况下(成功或失败)再用。
这里continuation的定义保证了,此时调用
t.Result
是正确的,t 已经完成了
- 不用传递
Task
时,可以用_ =>{ }
, 如下:
可以对 Task.Run
里面的 lamda 表达式 再使用 async
只当成功时,执行Continuation
- 个人理解:会
Task
套Task
continuation 是前面的 task 完成之后开始执行,完成 包括 成功完成 或者 因为exception而失败
这里
task t
的Exception
是一个aggregate exception, 我们还需要看它innerException来了解发生了什么问题
解决上面的问题:
ContinuationOptions
:OnlyOnRanToCompletion
: 没有exception和cancelOnlyOnFaulted
: 出错了- ...