采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
为什么await放在了longRunningTask之前而不是产生它的函数LongRunningOperationAsync之前?
问题非常好!
请对比下面代码你就明白了:
Task<
int
> longRunningTask = LongRunningOpAsync();
result = await longRunningTask;
result = await LongRunningOpAsync();
以上两句话是等效的,第一个方式是让longRuningOpAsync等于一个异步操作(此时类型为Task<T>),然后再await执行异步操作,输出int类型数据result;而第二种方式是直接await异步执行LongRunningOpAsync,直接输出int类型数据result。
我这么说能讲清楚了吗?
那请问老师这样写可以吗? Task<int> longRunningTask = await LongRunningOpAsync(); int result = longRunningTask;
我之前把Task<int>类型错误理解为执行函数的返回结果了,所以追问了一下那种写法是否可以。请问老师下面的理解是否正确? Task<int>是异步执行的操作,而不是执行的结果,当使用await后才真正异步执行得到结果。因此无论是先映射到Task<int>上再异步执行还是直接异步执行都是一样的。
没错,就是这样。所以,Task<int> longRunningTask = await LongRunningOpAsync(); 这样的写法是错误的。
登录后可查看更多问答,登录/注册
. Net 实战+RESTful思想纵深课程,开发优雅RESTful风格API。
487 2
548 2
634 1
1.1k 2
1.4k 3
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号