Net Core以后加入了很多异步的使用方式主要加入了关键词 await,async 关键词
一般大家异步方法以Async结尾例如 File.ReadAllTextAsync
async
用于声明异步函数,返回值为一个 Task 对象或者Task<T> 对象,它以类似 同步 的方式来写异步方法,语法与声明函数类似
static async Task<string> Rune() { var demo = "Hello World"; Thread.Sleep(1000); return demo; }
await
用法顾名思义,有 等待 的意思,语法为:
var value = await Rune();
使用了await方法的时候,调用的方法也必须增加 async 关键词
调用异步方法有几种
一、使用异步传递的方法异步调用
static async Task Demo01() { var str = await Rune(); Console.WriteLine(str); } static async Task<string> Rune() { var demo = "Hello World"; Thread.Sleep(1000); return demo; }
二、尝试用同步的方法使用
直接获取Task返回,然后调用result,此时就可以不加 async 关键词,变成同步方法,但是官方不建议,可能多并发时导致死锁
static void Demo01() { var t = Rune(); var str = t.Result; Console.WriteLine(str); } static async Task<string> Rune() { var demo = "Hello World"; Thread.Sleep(1000); return demo; }