C# async/await 同步思维解决异步问题方案

下面是一个代码实例
static void Main()
{
    Console.WriteLine("-------主线程启动-------");
    GetStrLengthAsync();
    Console.WriteLine("主线程继续执行");
    Console.WriteLine("-------主线程结束-------");

    Console.Read();
}
static async void GetStrLengthAsync()
{//跟主线程是同一个线程
    Console.WriteLine("GetStrLengthAsync方法开始执行");
    //此处返回的<string> 中的字符串类型,而不是Task<string>
    string str = await GetString();//等待GetString执行完成 
    Console.WriteLine("GetStrLengthAsync方法执行结束");
}

static Task<string> GetString()
{//跟主线程是同一个线程
    Console.WriteLine("GetString方法开始执行");
    return Task<string>.Run(() =>
    {//导步线程  处理耗时任务  如果是Winform不卡界面
        Thread.Sleep(4000);
        Console.WriteLine("GetString方法结束执行");
        return "GetString的返回值";
    });
}

运行结束

转载请保留原创地址 http://www.luofenming.com/show.aspx?id=ART2019092900001

评论