异步方法不等于多线程

目录

一、异步、线程

 二、Task.Run()

 三、总结


一、异步、线程

异步方法的代码并不会在新线程中执行,除非把异步代码块放入新线程中执行。

运行结果:

  

由此可见,线程没有发生切换。

 二、Task.Run()

1.把要执行的代码以委托的形式传递给 Task.Run(),它有很多重载方法,把要执行的代码放在委托里面就好了,

这样就能从线程池中取出一个线程执行我们的委托:

await Task.Run(()=>{

要执行的代码      //耗时代码操作可以用 return 返回值

})

因为 Run() 方法的返回值是 Task ,所以用 await 做返回值接受,一般有 Task 都用 await 。

因为写了有返回值,且返回值的类型为 result ,由此推出变量的类型就是返回值类型,方法的返回值类型也是Task<double> 类型,则正则表达式的返回值类型也为 Task 类型。

 运行结果为:

 三、总结

1.把异步代码块放到线程中去,才可能会在新的线程中执行。

猜你喜欢

转载自blog.csdn.net/2201_75837601/article/details/128501518