置百丈玄冰而崩裂,掷须臾池水而漂摇。

Net Core 异步方法获取返回值

ASP.NET Core 强强

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;
    }


发表评论:

验证码