C# 异步方法

在写基于任务的异步方法,遇到关于async、await的问题。

如下,写2个函数。F1()、F2(),差别是F1有async修饰。

https://img.mukewang.com/5b73d975000109cb03380214.jpg

问题1:

  为何F1有async修饰,就不需要return值了?而F2却提示我没有返回值?

  据我所知,async的作用是为了函数内能用await,是个编译器功能,并没有其它什么功能了啊。

https://img3.mukewang.com/5b73d981000134f504570279.jpg

问题2:

    明明 t 是异步执行的,为何提示却说是同步执行??

https://img2.mukewang.com/5b73d993000167c307290194.jpg

问题3:

  我给F2加了返回值,又写了个F3,请问F2和F3现在是不是一样的??

 

https://img4.mukewang.com/5b73d9a20001b5c503660270.jpg

异步方法到底要怎么写呢????

async Task F(),才是异步方法?

Task F(),只是返回一个Task的普通方法?


蛊毒传说
浏览 625回答 1
1回答

宝慕林4294392

异步是要有操作的异步.像你这种写法没有任何意义.一般有意义的异步是1.无须等待结果的并行运算.2.IO操作(数据库/文件系统/网络请求)的异步等待你的问题 1. 这个是语法.不要问为什么.语法就是这样  2.因为你没有等待其他异步操作.整个方法自然是同步的.3.当然不一样.代码都不一样了.  总的来说:你想太多了.
打开App,查看更多内容
随时随地看视频慕课网APP