首页新闻找找看学习计划

c# 中 Task.ContinueWith 的疑问

0
[已解决问题] 解决于 2019-04-25 17:33

最近看到了c# 中 Task.ContinueWith的用法,有一些疑问。
如果我有两个异步的方法func1 和 func2, func2需要func1的执行结果作为参数,下面这两种写法的区别是什么呢?

var result = await func1();
await func2(result);

----------------------------分割线-----------------------------------------------------------------------------------

func1().ContinueWith(
result = > {
func2(result.Result);
}
);

或者说Task.ContinueWith的作用场景是什么样的呢?

DogTwo的主页 DogTwo | 菜鸟二级 | 园豆:202
提问于:2019-04-25 17:12
< >
分享
最佳答案
0

写法不一样而已,就像你用new 关键字和用函数。
前者还需要要求函数本身为异步,后者不需要,Task本身就是异步,
后者写匿名函数更简洁方便。

奖励园豆:5
花飘水流兮 | 专家六级 |园豆:10341 | 2019-04-25 17:17

嗯嗯 明白了 谢谢您

DogTwo | 园豆:202 (菜鸟二级) | 2019-04-25 17:29
其他回答(2)
0

Task.ContinueWith有些参数很好用,比如可以设定只有任务执行失败了才执行,只有任务成功了才执行等

会长 | 园豆:5542 (大侠五级) | 2019-04-25 17:28

谢谢

支持(0) 反对(0) DogTwo | 园豆:202 (菜鸟二级) | 2019-04-25 17:29
0

1:你示例代码中的fun1和fund2的执行顺序在这两种写法中的执行顺序没有区别;
2:需要注意的是:第一种写法,在调用线程中是等待的。而第二种写法中,调用线程(即你当前编码的main线程)则是不等待func1 func2的执行的。
3:Task.ContinueWith的应用场景就像字面自已那样:前一个任务执行后你想继续做的任务用continue,实际就是等待;同时还可以设置某些条件下才真正执行continue

qust_青岛 | 园豆:4 (初学一级) | 2019-05-02 09:22
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册