最近看到了c# 中 Task.ContinueWith的用法,有一些疑问。
如果我有两个异步的方法func1 和 func2, func2需要func1的执行结果作为参数,下面这两种写法的区别是什么呢?
var result = await func1();
await func2(result);
----------------------------分割线-----------------------------------------------------------------------------------
func1().ContinueWith(
result = > {
func2(result.Result);
}
);
或者说Task.ContinueWith的作用场景是什么样的呢?
写法不一样而已,就像你用new 关键字和用函数。
前者还需要要求函数本身为异步,后者不需要,Task本身就是异步,
后者写匿名函数更简洁方便。
嗯嗯 明白了 谢谢您
Task.ContinueWith有些参数很好用,比如可以设定只有任务执行失败了才执行,只有任务成功了才执行等
谢谢
1:你示例代码中的fun1和fund2的执行顺序在这两种写法中的执行顺序没有区别;
2:需要注意的是:第一种写法,在调用线程中是等待的。而第二种写法中,调用线程(即你当前编码的main线程)则是不等待func1 func2的执行的。
3:Task.ContinueWith的应用场景就像字面自已那样:前一个任务执行后你想继续做的任务用continue,实际就是等待;同时还可以设置某些条件下才真正执行continue